我需要创建一个批处理文件,该文件在我们的服务器上运行10个文件的每日备份。为了提供简要的背景信息,我们使用每天都会将这些文件吐出的付款系统,我们希望确保每天将这些文件上传到服务器,但这些文件的文件名每天都会更改,这意味着会覆盖这些文件。可能行不通。我可以自信地创建一个批处理文件来进行复制和覆盖,但是,我不确定如何用一批具有不同文件名的新批量文件覆盖这些文件。
你能协助吗?
亲切的问候,
广告
答案 0 :(得分:0)
:: this deletes 10 files named "file1.txt" to "file10.txt"
for /L %%a in (1,1,10) do del R:\Test\file%%a.txt
:: this takes ALL of the files matching the mask and copies them to
:: "file*.txt" at the destination
for /f "tokens=1*delims=: " %%a in (
'dir /b /a-d "C:\Users\Username\Desktop\Test*" ^|findstr /n /r "." ') do (
echo xcopy "C:\Users\Username\Desktop\%%b" "R:\test\file%%a.txt"
)
第一个命令应该是显而易见的。
第二个只列出源目录,仅列出名称,没有匹配“test *”的文件的目录名,并将该输出定向到findstr
/n
对每个与/r
常规字符匹配的行进行编号表达“。” (将 all 。)
findstr
输出的格式为
1:测试one.xyz
for
会对结果进行标记,%%a
在分隔符序列之前接收部分,然后在%%b
之后接收部分。分隔符设置为:
和 Space ; findstr
将每个计为分隔符,将一系列分隔符统计为一个。
结果为echo
以确保建议的操作报告,而不是执行,以便在发生任何损害之前检测到任何错误。
激活copy
,只需删除echo
关键字。
请注意,这些文件仍保留在源代码中,因为您没有提供有关如何进一步处理这些文件的任何线索。如果文件保留在适当的位置,它们也会在下次运行时被复制 - for
循环将继续计数......
for /f "tokens=1*delims=: " %%a in (
'dir /b /a-d /o-d "C:\Users\Username\Desktop\Test*" ^|findstr /n /r "." '
) do if %%s leq 10 (
echo copy "C:\Users\Username\Desktop\%%b" "R:\test\"
)
[将命令回显到] copy
从源目录到目的地的最新10个文件。
如何将10
更改为其他值。
操纵实际目录名称并维护源目录和目标目录 - 你的事情。