由坛友 liu_zhenfeng 帮助解决,非常感谢!
本帖最后由 一本小书 于 2020-5-27 18:13 编辑D盘里有个文件夹ISO64bat,ISO64bat中还有文件夹及一些文件,其中里边有个MakeISO.bat文件。我想实现运行MakeISO.bat后能把ISO64bat本身及里边的所有文件全部删除(包括ISO64bat文件夹本身)。或是在MakeISO.bat中再调用D盘一个bat或cmd删除也行。苦于不会写代码,请朋友们伸手帮助一下谢谢!
我手动用以下代码可以完全删除,只是想实现自动删除;
@echo off
rmdir /s/q D:\ISO64bat
a.bat
@echo off
echo I am a.bat…
echo now run the b.bat
cd /d D:\test
start “” cmd /k call b.bat
echo over
b.bat
@echo off
echo I am b.bat…
执行后得到结果如下:
原本的cmd窗口中:
I am a.bat…
now run the b.bat
over
新的cmd窗口中:
I am b.bat…
这里简单解释下该命令的参数:
start “” cmd /k call b.bat
“”是一段字符串,代表新打开的cmd窗口的名字,可以随便起名。
/k是表示新打开的cmd窗口在执行完命令后保存打开状态,如果希望执行完就关闭窗口就使用/c
call b.bat表示call命令,即调用b.bat文件;该命令可以用”“括起来,即:”call b.bat”https://cdn.jsdelivr.net/gh/hishis/forum-master/public/images/patch.gif 在你的批处理后面加上你的那句删除命令就行吧 窄口牛 发表于 2020-5-27 16:18
在你的批处理后面加上你的那句删除命令就行吧
在我的MakeISO.bat 最后添加 rmdir /s/q D:\ISO64bat 命令后结果是文件夹里边的文件全部删除了,可是ISO64bat文件夹本身没有删除,就难在这了,嘿嘿,感谢回复!
yxldh 发表于 2020-5-27 16:17
a.bat
@echo off
感谢回复,但我看不懂, 当前目录被占用了,生成清理bat脚本到tmp临时文件夹,sleep,timeout或ping -n延时几秒再删除。 本帖最后由 liu_zhenfeng 于 2020-5-27 18:02 编辑
. liu_zhenfeng 发表于 2020-5-27 17:07
win7下试验可用,请小心操作!
首先感谢你费心了,我的需求是:D盘有个文件夹1234,在1234这个文件夹中有目录及文件,其中有个111.bat,我想运行这个111.bat删除1234文件夹本身及里边的目录及文件。最重要是的删除1234文件夹本身。 slore 发表于 2020-5-27 17:06
当前目录被占用了,生成清理bat脚本到tmp临时文件夹,sleep,timeout或ping -n延时几秒再删除。
rmdir /s/q D:\ISO64bat 这个命令怎么加个等待时间代码呢。 一本小书 发表于 2020-5-27 17:34
首先感谢你费心了,我的需求是:D盘有个文件夹1234,在1234这个文件夹中有目录及文件,其中有个111.bat, ...
增加echo rd /s /Q %folder% >>delFiles.bat
liu_zhenfeng 发表于 2020-5-27 17:54
增加echo rd /s /Q %folder% >>delFiles.bat
哥们你写的最好,感谢,测试成功,, 本帖最后由 一本小书 于 2020-5-27 20:50 编辑
liu_zhenfeng 发表于 2020-5-27 17:07
.
哈哈,哥们你还得辛苦了一下帮看看,当前目录及里边的文件确实删除了,但有个问题,脚本不退出还报错,截图如下:
我运行的脚本内容如下:这是一个自动给install.wim打包ISO的脚本;我都标注汉字了,最下边是你帮写的代码;我是用另一个cmd调用下边的bat;
@echo off
color 1f
cd /d "%~dp0"
SET CurDir=%CD%
echo 正在打包ISO文件
rem 设置需要打包的目录名,相当于光盘的根目录
set intdir=%CurDir%\CDROM
rem 设置光盘的引导文件MBR
set BIOSFile=%CurDir%\bios.bin
rem 设置光盘的引导文件UEFI
set UEFIFile=%CurDir%\uefi.bin
rem 当前目录下输出的文件名 (文件名可以改,但要用长文件名,不支持短文件名,支持汉字与英文名)
set output=%CurDir%\Windows 10_Ent_32bit_My_2004_19041.iso
rem 设置光盘的卷标
set jb=UEFI/BIOS_ENT_32bit_My
rem 本行命令适用于制作BIOS/UEFI 双启动 的ISO 微软原版系统光盘采用的就是这种方法
OSCDimg -h -m -o -u2 -g -udfver102 -l%jb% -bootdata:2#p00,e,b"%BIOSFile%"#pEF,e,b"%UEFIFile%" "%intdir%" "%output%"
cls&echo ISO生成完毕!
ping -n 3 127.0.0.1>nul
echo 正在复制Windows 10_Ent_32bit_My_2004_19041.iso到D盘10_ISO目录下;
Xcopy /y"D:\ISO32bat\Windows 10_Ent_32bit_My_2004_19041.iso" "D:\10_ISO\"
rem 删除当前目录下所有目录及文件,并删除当前目录本身
set folder="%cd%"
cd..
echo del %folder%\*.* /q >delFiles.bat
echo rd /s /Q %folder% >>delFiles.bat
echo rd %folder% >>delFiles.bat
echo del delFiles.bat >>delFiles.bat
delFiles.bat
exit
看有没有办法处理,其实不误使用,目的已经达到,当前目录以及目录下的所有文件全部已经删除,只是脚本报错不退出;辛苦你了,,
本帖最后由 liu_zhenfeng 于 2020-5-27 21:18 编辑
echo exit >>delFiles.bat
加在
delFiles.bat
exit前面
如过不起作用可能是调用导致的,试试改start xxx.bat调用能不能解决。
liu_zhenfeng 发表于 2020-5-27 21:10
上面代码直接运行没问题,可能是调用导致的,试试用start xxx.bat调用能不能解决。
我用cmd是这种方式运行bat的; CALL "%~DP0ISO64bat\MakeISO.bat" ; 是CALL命令的原因吧;好像是它执行完后返回 ?这个cmd也在D盘,它用CALL "%~DP0ISO64bat\MakeISO.bat"命令运行D盘ISO64bat文件夹下的MakeISO.bat文件,MakeISO.bat内容就是上边的代码。 echo exit >>delFiles.bat
加在
delFiles.bat
exit前面
如过不起作用可能是调用导致的,试试改start xxx.bat调用能不能解决。 liu_zhenfeng 发表于 2020-5-27 21:19
echo exit >>delFiles.bat
加在
delFiles.bat
我用start xxx.bat调用方式去测试,感谢! 本帖最后由 一本小书 于 2020-5-31 06:33 编辑
liu_zhenfeng 发表于 2020-5-27 21:19
echo exit >>delFiles.bat
加在
delFiles.bat
经过测试就是我调用语句造成的,你的bat特别好使,我调用命令CAll的原因,它执行完指令后返回到开始执行的脚本,是我开始脚本的问题,经修改目前非常好用!谢谢!
页:
[1]