此批处理脚本应映射到PC并使用日期和时间重命名该文件夹中的文件。时间戳并将它们复制到另一台PC上的另一个位置。然后它应该删除该源文件夹中的所有文件,除了名为“LBBS.log”的文件。除删除部分外,一切正常。它没有删除文件夹中的任何内容,实际上它正在删除批处理文件本身。当我运行它时,它复制得很好,但它会删除自己。有人可以告诉我我需要改变什么来工作。我错过了什么?它在Windows 7环境中。提前谢谢。
net use x: \\MTLLBBS023\C$
set "stamp=%date:~4,2%%date:~7,2%%date:~10,4%%time:~0,2%%time:~3,2%%time:~6,2%"
set "source=MTLLBBS023"
xcopy /S /E /I x:\logs E:\Data\Logs\MTLLBBS023\%source%-%stamp%.*
cd x:\Logs
for %%i in (*) do if not %%i == LBBS.log del %%i
net use x: /delete
答案 0 :(得分:2)
问题是您的脚本和目标目录位于不同的驱动器上。
当您cd
到另一个目录时,如果您尝试在不使用/d
选项的情况下移动到另一个驱动器,该命令将失败。
而不是cd x:\logs
,您应该说cd /d x:\logs
- 这将更改驱动器和目录。
或者,代替net use
和net use delete
命令,您只需pushd \\MTLLBBS023\C$
转到网络驱动器(这也会自动创建临时网络驱动器),然后{{1在脚本的末尾离开目录并删除映射的驱动器。这样,您根本不需要popd
。