加上 echo %cd% 就没事 不加就闪退

想写个bat 在文件里加入插入一行代码
用的sed64 -i

img

for /f "delims=" %%i in (tmp20200226.txt) do (
::echo %cd%
sed64 -i "/Wallpaper/a condition="gt(#touch_begin_x-#touch_x,200)"/>\n asdf" "%cd%\tmp20200226\lockscreen\advance\manifest.xml"
)
pause

会失败

for /f "delims=" %%i in (tmp20200226.txt) do (
echo %cd%
sed64 -i "/Wallpaper/a condition="gt(#touch_begin_x-#touch_x,200)"/>\n asdf" "%cd%\tmp20200226\lockscreen\advance\manifest.xml"
)
pause

成功了!

你编辑bat代码,去掉echo off,然后在cmd里调用bat文件,就可以看到具体错误提示,而不是闪退。

尝试下这2个思路:
1、在.bat文件末尾加上pause:提示用户“按任意键继续”
2、通过修改.bat文件的打开指令,让每个bat文件执行完之后都暂停。
操作方法:
1)打开注册表编辑器 regedit
2)找到HKEY_CLASSES_ROOT\batfile\shell\open\command 位置
3)将默认值修改为:”%1” %* & pause
 【这个命令的作用是在打开该bat文件之后再执行一个 pause 命令,这样就可以避免上述问题发生了。对于“以管理员身份运行”】
4)还需修改 HKEY_CLASSES_ROOT\batfile\shell\runas\command 位置,将其默认值改为:%SystemRoot%\System32\cmd.exe /C “%1” %* & pause

加上 echo cd就会打印个cd,不加你所有指令都重定向到空了,直接丢弃了,什么都不输出,那执行完窗口不关闭了吗

末尾加个pause,执行完毕后暂停

不是闪退,是执行完毕了

那是执行完成但是脚本没输出,不是闪退了