Scripting 仅获取前一天的文件并将其复制到其他位置的批处理文件
好的,我做了一些研究,但遇到了一些障碍。我想做的是,(使用事件调度器),每天运行一个批处理,只取前一天的“ips*.csv文件(*只是日期格式),然后复制到其他地方,在我的测试中,我使用了“destiny ips”文件夹。我想我在最后一个关卡上搞砸了Scripting 仅获取前一天的文件并将其复制到其他位置的批处理文件,scripting,batch-file,copy,Scripting,Batch File,Copy,好的,我做了一些研究,但遇到了一些障碍。我想做的是,(使用事件调度器),每天运行一个批处理,只取前一天的“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 i
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
提前谢谢你的帮助
Jonny这看起来很可疑:
XCOPY C:\Users \J\Desktop\ips bat\source
是否正确?要在命令行中包含特殊字符,请使用0xHH格式的字符十六进制代码(例如0x09是标签字符,0x22是双引号“字符”),因此“C:\Program Files”变为^0x22C:\Program^Files^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
为了便于阅读,我将其分为多行,但您需要将其放回一行
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\"
就够了
关键点是:
(很显然,…etc…是所需路径名的其余部分-DOS不是通灵的)您好,谢谢您的帮助,对不起,我似乎无法实现这一点,可能误导了您。我的问题不是双引号,我的文件没有双引号。我的问题是,我似乎无法让逻辑发挥作用。我似乎无法获得前一天的信息,也无法复制文件。真的很有帮助,非常感谢。在帮助中看不到/D(例如/?),我想我可能把它复杂化了!我的一个问题是,我不希望今天,即使它将在那里被写入。前几天(完成后)。