Board logo

标题: [系统相关] WIN7系统运行代码提示错误 [打印本页]

作者: adfs945    时间: 2023-8-11 15:25     标题: WIN7系统运行代码提示错误

大家好:

经过近期的学习,写了一些bat程序:循环自动将指定文件夹内文件移动到其他位置。

问题点:在WIN10系统运行正常,在WIN7系统运行会导致系统卡死
最终在各位的指导下排查出异常代码:隐藏运行窗口
个人理解:难道是win7系统不能识别或者不支持?
想问下大家win7情况下想隐藏运行窗口该如何实现?
提示错误代码:
  1. start mshta vbscript:createobject("wscript.shell").run("""%~0"" hide",0)(window.close)&&exit
复制代码
错误排查方法写真(因论坛图片上传失败,所以使用图床):
在com界面一句一句运行,确认哪一步出现异常。
1.
2.
3.

完整代码:
  1. if "%1"=="hide" goto CmdBegin
  2. start mshta vbscript:createobject("wscript.shell").run("""%~0"" hide",0)(window.close)&&exit
  3. :CmdBegin
  4. @echo off
  5. set INTERVAL=10
  6. :Again
  7. rem 批处理保存为ansi编码格式
  8. set "folder1=C:\Users\dmns25163\Desktop\AAA"
  9. set "folder2=S:\DMNSPZJC"
  10. for %%a in ("%folder1%\*.*") do (
  11. if not exist "%folder2%\%%~nxa" (
  12. move "%%a" "%folder2%"
  13. ) else (
  14. set n=1
  15. call :1 "%%a"
  16. )
  17. )
  18. timeout %INTERVAL%
  19. goto Again
  20. pause
  21. exit
  22. :1
  23. set /a n+=1
  24. if not exist "%folder2%\%~n1(%n%)%~x1" (
  25. move "%~1" "%folder2%\%~n1(%n%)%~x1"
  26. exit /b
  27. ) else (
  28. goto :1
  29. )
复制代码

作者: Batcher    时间: 2023-8-11 16:04

回复 1# adfs945
  1. if "%1"=="hide" goto :ExecBat
  2. start mshta vbscript:createobject("wscript.shell").run("""%~f0"" hide",0)(window.close) && exit /b
  3. :ExecBat
  4. @echo off
  5. start notepad
  6. ping -n 5 127.0.0.1 >nul
复制代码
我在Win7里面测试没有问题。
你改成%~f0再试试,如果还是不行,检查一下批处理所在完整路径是否有特殊字符。
作者: Five66    时间: 2023-8-11 16:12

路径有英文逗号?
作者: buyiyang    时间: 2023-8-11 16:18

你在命令行界面执行
  1. start mshta vbscript:createobject("wscript.shell").run("""%~0"" hide",0)(window.close)&&exit
复制代码
提示找不到文件是因为批处理外%~0无法被扩展,实际这行代码应该没有问题。
作者: Five66    时间: 2023-8-11 16:51

啊,原来你是直接在cmd里输入的,就如楼上所说的那样
作者: jszw666    时间: 2023-8-12 23:31

都是高手啊,向大咖学习




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2