第一次发布海报,希望我能做到这一点。
我正在尝试设置一个首先读取当前日期和时间的批处理文件,并从中创建一个文件夹,如下所示:
@echo off
SET dirname="%date:~0,2%-%date:~3,2%-%date:~6,4%-%time:~0,2%%time:~3,2%"
mkdir Bat\%dirname%
attrib +s +h %dirname% /s /d
在此之后,我将一些备份拉入该文件夹,然后想要使用7zip命令行压缩它并将此行添加到第一个批处理文件中:
start /wait Bat\7Zip.bat %dirname% Bat\%dirname%* -r
调用7zip.bat:
@echo off
Bat\7z.exe a -mhe -p*** Bat\%dirname%.7z Bat\%dirname%* -r
exit 0
最后我尝试使用以下方法删除原始文件夹:
start /wait del /F /Q /a Bat\%dirname%
exit 0
这是我的两个问题。首先,当它运行7zip文件时,在它完成后,第二个命令提示符保持打开状态,当我手动关闭它时,第一个提示询问我是否要中止批处理作业,即使它已完成。我希望这一切能够自行完成。
第二关。 del命令可以删除文件夹中的文件而不是文件夹本身,任何想法我都缺少了吗?
提前感谢所有帮助。对不起,这是我的第一批尝试之一,所以可能非常草率。
答案 0 :(得分:1)
@echo off
SET "dirname=%date:~0,2%-%date:~3,2%-%date:~6,4%-%time:~0,2%%time:~3,2%"
mkdir "Bat\%dirname%"
Bat\7z.exe a -mhe -p*** "Bat\%dirname%.7z" "Bat\%dirname%*" -r
RD /S /Q "Bat\%dirname%"
exit 0
答案 1 :(得分:0)
关于目录移除的第二个问题的答案:
在del /F /Q /a Bat\%dirname%
之后,您必须致电rmdir Bat\%dirname%
答案 2 :(得分:0)
来自start /help
命令/程序 如果是内部cmd命令或批处理文件则 命令处理器使用/ K开关运行到cmd.exe。 这意味着窗口将在命令后保留 已经运行了。
If it is not an internal cmd command or batch file then it is a program and will run as either a windowed application or a console application.
因此您应该使用start /wait Bat\7z.exe [...]
代替start /wait Bat\7Zip.bat [...]
关于dir删除使用RD /S /Q [drive:]path
(谨慎使用)