0

好的,所以我做了一些研究,但在这里遇到了一些障碍。我想要做的是,(使用事件调度程序)每天运行一个批处理,它只获取前一天的“ips*.csv 文件(* 只是日期格式)并将其复制到其他地方,以供我测试我使用了“destiny ips”文件夹。我想我在最后一道障碍上搞砸了。

 FORFILES /P "C:\Users\J\Desktop\ips bat\source ips" /M "ips*.csv" /C "cmd /c XCOPY C:\Users     \J\Desktop\ips bat\source ips folder C:\Users\J\Desktop\ips bat\destiny ips" /D -1

感谢您提前提供任何帮助。

强尼

4

3 回答 3

1

要在命令行中包含特殊字符,请使用 0xHH 格式的字符的十六进制代码(例如 0x09 是 TAB 字符,0x22 是双引号 " 字符。)因此 "C:\Program Files\" 变为 ^0x22C:\程序^文件\^0x22

FORFILES 
   /P "C:\Users\J\Desktop\ips bat\source ips" 
   /M "ips*.csv" 
   /C "cmd /c 
     XCOPY ^0x22C:\Users\J\Desktop\ips^ bat\source ips folder^0x22
           ^0x22C:\Users\J\Desktop\ips^ bat\destiny ips^0x22" 
   /D -1

为了便于阅读,我将它分成了多行,但你会想把它放回一行。

于 2013-03-22T16:48:08.057 回答
1
for /f "delims=" %%i in (
 'dir /b /o:-d "c:\users...etc...ips*.csv" ' ) do (
 xcopy /d "%%i" "C:\Users\J\Desktop\ips bat\destiny ips\" &goto :eof
 )

应该非常简单地做到这一点(事实上,它可以都在一行上)它只会将文件的最新版本复制到目标 - 然后只有当目标文件不存在(或与源中的版本。)这应该照顾任何非营业日,如周末或公共假期。

如果目标保留所有历史记录(即ips*.csv目标中可能有不在源中的文件,但反之亦然(“昨天”的新文件除外)),那么只需

xcopy /d "c:\users...etc...ips*.csv" "C:\Users\J\Desktop\ips bat\destiny ips\"

就足够了。

关键点是:

  1. 目的地以“\”结尾表示“这是一个目录名”
  2. /d 将告诉 XCOPY 只复制新的或更新的文件。

(按理说 ...etc... 是所需路径名的其余部分 - DOS 不是通灵的)

于 2013-03-22T16:55:54.193 回答
0

这看起来很可疑-:

 XCOPY C:\Users     \J\Desktop\ips bat\source 

这是正确的吗?

于 2013-03-22T16:34:29.800 回答