我制作了一个蝙蝠脚本如下
cd "D:\ACT\ACTBKUP"
del /Q *.*
FORFILES /P E:\ACT_Backups /M *.zip /D +1 /C "cmd /c del @D:\ACT\ACTBKUP"
该脚本应该删除" D:\ ACT \ ACTBKUP"中的所有内容。然后将最新的zip文件夹从E:\ ACT_Backups移动到同一文件夹。当我从Windows Server 2012运行此脚本时,它就会消失。
感谢
答案 0 :(得分:1)
要切换到位于其他驱动器上的目录,您需要使用cd /d
而不是cd
。如果不这样做,目录将不会更改。
通过双击运行脚本时,批处理将当前目录视为脚本当前所在的目录。由于您没有将/d
选项与cd
一起使用,因此您在脚本所在的目录上运行del /Q *.*
。
要解决此问题,您有两种选择:
cd /d "D:\ACT\ACTBKUP"
del /Q *.*
或
del /Q "D:\ACT\ACTBKUP"
<小时/>
forfiles
中没有选项可以获取最新文件; /D +1
将返回所有文件,其最后修改日期为今天或更晚。为了获取最新的文件,您需要for /f
循环:
rem /b returns just the file name and /o:d sorts the files by date
rem Since newest_file gets set for each .zip file in the directory,
rem the last file set will be the newest
for /f "delims=" %%A in ('dir /b /o:d E:\ACT_Backups\*.zip') do set newest_file=%%A
copy %newest_file% D:\ACT\ACTBKUP