我已使用此批处理脚本创建.exe
的快捷方式,但我想动态获取.exe
名称。在一个文件夹中,我有批处理文件和一个.exe
文件,我想在我的批处理文件中动态获取.exe
名称。
@echo off
set SCRIPT="%TEMP%\%RANDOM%-%RANDOM%-%RANDOM%-%RANDOM%.vbs"
echo Set oWS = WScript.CreateObject("WScript.Shell") >> %SCRIPT%
echo sLinkFile = "%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\Player111.lnk" >> %SCRIPT%
echo Set oLink = oWS.CreateShortcut(sLinkFile) >> %SCRIPT%
echo oLink.TargetPath = "%CD%\Pacman.exe" >> %SCRIPT%
echo oLink.Save >> %SCRIPT%
cscript /nologo %SCRIPT%
del %SCRIPT%
我想动态设置oLink.TargetPath
。它将是批处理文件与.exe
名称一起定位的路径。如何动态地获得上面代码中提到的Pacman.exe
?请记住,文件夹中只有一个.exe
。
答案 0 :(得分:1)
获取变量的文件名(假设只有一个匹配):
for %%a in ("%~dp0*.exe") do set "file=%%a"
echo %file%
以后
echo oLink.TargetPath = "%file%" >> %SCRIPT%
答案 1 :(得分:1)
要检索位于批处理文件的父目录中的.exe
的完整路径,请使用以下代码:
for %%F in ("%~dp0*.exe") do set "EXEFILE=%%~fF"
(注意:要使用当前工作目录,请将%~dp0*.exe
替换为%CD%\*.exe
。)
最后,将行echo oLink.TargetPath = "%CD%\Pacman.exe" >> %SCRIPT%
替换为:
echo oLink.TargetPath = "%EXEFILE%" >> %SCRIPT%
以下是完整的脚本 - 还有其他一些改进:
@echo off
set "SCRIPT=%TEMP%\%RANDOM%-%RANDOM%-%RANDOM%-%RANDOM%.vbs"
for %%F in ("%~dp0*.exe") do set "EXEFILE=%%~fF"
> "%SCRIPT%" (
echo Set oWS = WScript.CreateObject^("WScript.Shell"^)
echo sLinkFile = "%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\Player111.lnk"
echo Set oLink = oWS.CreateShortcut^(sLinkFile^)
echo oLink.TargetPath = "%EXEFILE%"
echo oLink.Save
)
cscript //NoLogo "%SCRIPT%"
del "%SCRIPT%"