我一直试图创建一个快捷方式来启动快捷方式位置上一个文件夹的批处理文件。我找不到并回答这个问题。
我已经能够使用与快捷方式位于同一文件夹中的中间批处理文件来解决这个问题,如下所示Intermediate.bat
::
@echo off
FOR %%V IN ("%~dp0..\") DO set curdrv=%%~dpV
start "" %curdrv%Oneup.bat
快捷方式目标是:
%windir%\system32\cmd.exe /c Intermediate.bat
并且‘开始于’留空。
这样,我可以将这些文件夹移动到驱动器或其他驱动器上的任何位置,快捷方式仍然有效。但是,我想省去 Intermediate.bat 文件并Oneup.bat
直接启动。我试过:
%windir%\system32\cmd.exe /c FOR %%V IN ("%~dp0..\") DO set curdrv=%%~dpV && start "" %curdrv%Oneup.bat
在快捷方式的目标中,但是它不起作用。
有什么诀窍可以让这个功能发挥作用吗?谢谢
答案1
我想省略 Intermediate.bat 文件并直接启动 Oneup.bat。
我试过:
%windir%\system32\cmd.exe /c FOR %%V IN ("%~dp0..\") DO set curdrv=%%~dpV && start "" %curdrv%Oneup.bat
在快捷方式的目标中,但是它不起作用。
上述命令(在 shell 中执行cmd
)存在两个问题:
%%
%
在批处理文件和命令行中使用。%0(用于
%~dp0
)仅在批处理文件中有效。
您可以使用以下(简化的)快捷目标:
%windir%\system32\cmd.exe /c start "" ..\Oneup.bat
一如既往..\
地返回当前目录的上一级目录。
进一步阅读
- Windows CMD 命令行的 AZ 索引- 与 Windows cmd 行相关的所有事物的绝佳参考。
- 对于/f- 循环命令以执行另一个命令的结果。
答案2
大卫的解决方案对我来说不起作用(无论出于什么原因)。
但事实确实如此:
powershell.exe -command "Start-Process \"..\The Name Of Your Batch.bat\""
将快捷方式的“开始于”字段留空。