获取批处理文件旁边的exe名称

时间:2016-10-20 07:52:40

标签: windows batch-file

我已使用此批处理脚本创建.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

2 个答案:

答案 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%"
相关问题