是否可以将此多行批处理脚本转换为可工作的班轮脚本?

时间:2019-11-13 14:26:48

标签: windows performance batch-file scripting registry

我想将多行批处理脚本制作成一个衬里,以便可以将其用作文件浏览器上下文菜单项。我知道我可以在注册表中链接批处理文件以调用批处理脚本,并且它确实可以工作。

我试图提高我的编码水平,所以我想知道是否有人可以看一下并给我一些指导。我一直在研究和测试以找到自己的答案,但是很短。如果将批处理脚本路径链接到注册表命令键中,我将包括两个脚本,它们都可以实现相同的目的并且都可以工作。

Script A更为复杂,并提供了更多选项供代码遵循,具体取决于代码在运行过程中遇到的情况。 Script B比较简单,但最终仍然达到了脚本的主要目的。

在自定义上下文菜单中从注册表中调用脚本A,该菜单在注册表项的命令键中运行此行代码。

"C:\Users\jholl\OneDrive\Documents\01_Scripts\01_REGISTRY_MAIN\Registry_Edits\File_Explorer\Context_Menu\Restart_Explorer\Restart_Explorer.bat" "%V"

我在bat文件末尾添加"%V"的原因是将自定义命令行参数传递给批处理脚本,以便当我使用文件夹的目录\ background访问上下文菜单并单击菜单项时名为“重新启动资源管理器”,它将捕获“%〜1”参数中的当前目录,然后当在killkill关闭脚本的所有实例后重新启动explorer.exe时,可以在该脚本的末尾重新启动文件管理器到同一文件夹.exe。

与必须通过浏览文件浏览器来手动重新定位文件夹相比,这更方便

@echo off
setlocal
prompt $g

call :restart_explorer "%~1"
goto:eof

:restart_explorer
tasklist /fi "imagename eq explorer.exe" | find /i /n "explorer.exe" >nul
if "%errorlevel%"=="0" (
start "" /wait taskkill /f /im explorer.exe &&^
start "" explorer &&^
start "" /max explorer "%~1" &&^
exit /b
) else (
goto failed
)

:failed
cls && echo.
echo taskkill was unable to find/close explorer.exe
echo it is most likely not running
timeout 5 >nul
exit /b

脚本B只是简化的代码。不再。与上述目标相同,步骤更少。

@echo off
setlocal
prompt $g

call :restart_explorer "%~1"
goto:eof

:restart_explorer
tasklist /fi "imagename eq explorer.exe" | find /i /n "explorer.exe" >nul
if "%errorlevel%"=="0" (start "" /wait taskkill /f /im explorer.exe)
start "" explorer &&^
start "" /max explorer "%~1" &&^
exit /b

任何能给我带来帮助的想法都将得到极大的认可。再次,我希望将其变成一个衬板。

0 个答案:

没有答案