关闭多个批处理文件

时间:2013-09-12 13:49:26

标签: windows batch-file cmd

第一次发布海报,希望我能做到这一点。

我正在尝试设置一个首先读取当前日期和时间的批处理文件,并从中创建一个文件夹,如下所示:

@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命令可以删除文件夹中的文件而不是文件夹本身,任何想法我都缺少了吗?

提前感谢所有帮助。对不起,这是我的第一批尝试之一,所以可能非常草率。

3 个答案:

答案 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(谨慎使用)