Board logo

标题: [数值计算] 批处理根据计算产生子文件夹 [打印本页]

作者: zcdwzcdw    时间: 2009-4-19 21:12     标题: 批处理根据计算产生子文件夹

大家好,我公司不能上网只能发邮件。我现在是用手机发贴子,没有触摸屏打字好辛苦,有违版规的地方请版主见谅。
我的实际问题:我每天在公司主机分配给我的文件夹\\centerdatabase\storehousemanager里操作若干文件。因我的文件涉及敏感数据,并且更新很快,同时有很多部门调用,所以我希望在我的电脑创建一个文件夹f:\数据回溯,然后写这样一个批处理:在某日运行第一次,创建%date%文件夹,并在里面创建1子文件夹,将公司主机上的文件拷到f:\数据回溯\%date%\1里面,运行第二次,创建f:\数据回溯\%date%\2并把文件拷进去,依次类推,每点一次批处理它就保存一次并且在不同的文件夹(不会覆盖以往的文件)。
我只想到一点但是写不齐:
md f:\数据回溯\%date%
cd f:\数据回溯\%date%
dir|find "<DIR>" /c ---这行会输出2,也就是当前目录中文件夹个数+2,这样只要能使(dir|find "<DIR>" /c)-1成为MD能识别的参数即可,但是如何使用set设定(dir|find "<DIR>" /c)-1能计算成功并成为文件夹的名字呢?我试了很久都搞不定。请高手帮忙不胜感激!

用手机打字没法排版请各位见谅。诺基亚的键盘好难按,手指生疼。
作者: Batcher    时间: 2009-4-19 21:30

  1. @echo off
  2. set FolderNum=0
  3. for /f %%a in ('dir /b /ad "f:\数据回溯\%date%"') do (
  4.   set /a FolderNum+=1
  5. )
  6. echo 今天文件夹的数量是:%FolderNum%
  7. pause
复制代码

作者: 随风    时间: 2009-4-19 21:40

%date% 的格式 2009-04-19 星期日
:
  1. @echo off&set /a n=0
  2. set "wjj=%date:~0,10%"
  3. :loop
  4. set /a n+=1
  5. if exist "f:\数据回溯\%wjj%\%n%\" goto loop
  6. md "f:\数据回溯\%%date:~0,10%\%n%"
  7. copy /y "源文件全路径及文件全名" "f:\数据回溯\%wjj%\%n%"
  8. pause
复制代码

作者: htnet11    时间: 2009-4-20 11:42     标题: 创建根据时间命名的文件夹不是更好

我觉得你可以这样考虑啊,不一定文件夹命名为1、2、3。用当前的时间不是很好。
每次运行都用日期作为母文件夹,用几点几分作为子文件夹。
我这里写了一个获取时间作为文件夹名的代码中的一小段。你参考下。结合自己的需要写写咯。
  1. set d=%date:~0,10%
  2. set t1=%time:~0,2%
  3. set t2=%time:~4,1%
  4. set t=%t1%时%t2%分
  5. md f:\数据回溯\%d%\%t%
  6. f:
  7. cd f:\数据回溯\%d%\%t%
复制代码
你试试看。

如果你要定期运行,就结合windows的计划任务吧。

我们编辑批处理的目的是要方便。系统能完成的我们还是让系统自己完成。

[ 本帖最后由 htnet11 于 2009-4-20 11:44 编辑 ]




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2