如何批量使用带有文件路径的变量?

问题描述 投票:0回答:1

我编写了一个批处理脚本来打开一些 pdf 文件,效果很好。

但是我必须经常更改目录的路径。所以我尝试使用一个扩展到该目录路径的变量。

但是当我在

for
start
命令中使用该变量时,脚本会打开不存在的文件。

我最好的猜测是

set
命令不支持路径
\
,但如果有人知道在脚本中使用变量的方法,我们将不胜感激。

代码如下:

for /f "usebackq delims=|" %%f in (`dir /b "C:\path to the folder"`) do (
        start msedge.exe "C:\path to the folder\%%f\generic file name"
)

当我使用路径时它工作得很好,但是当我将其更改为变量时,它不起作用。

带有变量的代码如下:

set dirPath=C:\users\path_to_the_folder

for /f "usebackq delims=|" %%f in (`dir /b "dirPath"`) do (
        start msedge.exe "dirPath"
)

我尝试删除“”,但是当我使用变量时,脚本打开不存在的文件

batch-file scripting
1个回答
0
投票

MS Edge 需要 URL 作为参数,因此文件夹的命令将如注释之一中所述

“%ProgramFiles%\Microsoft\Edge\Application\msedge.exe”“%~1”
“%ProgramFiles(x86)%\Microsoft\Edge\Application\msedge.exe”“%~1”

其中“%~1”可以是多种类型之一,例如文件夹或文件 注意 URL 需要正斜杠才能正常工作。但是 Windows 会进行转换。

“file:///%UserProfile%/Desktop/”或者可以是“C:\Users\username\Desktop”

如果您希望根据问题使用批处理文件,根据定义,调用多个用户根文件夹似乎很奇怪。由于存在许多不适合 MSedge 的不适当文件。我目前在一个从未使用过的基本帐户中有 27 个对象,并且不希望所有这些对象都在 MSedge 中。! (我一直不得不关闭很多错误的选项卡)。无论未说明的任务是什么,这感觉都是完全错误的命令。

set "dirPath=C:\users\path_to_the_folder"

REM The following is recommended but will vary depending on OS location
REM however in this usage case may not be needed see REM below
set "msedge=%ProgramFiles%\Microsoft\Edge\Application\msedge.exe"

for /f "usebackq delims=|" %%f in (`dir /b "%dirPath%"`) do (
        start "WindowName" "%msedge%" "%dirPath%\%%f"
REM the following will also work where windows uses a shorter start command
REM     start msedge "%dirPath%\%%f"
)
pause

结果是 10 个选项卡,每个选项卡一个

2015-11-17  13:38    <DIR>          Contacts
2019-08-14  01:50    <DIR>          Desktop
2020-08-04  17:43    <DIR>          Documents
2015-11-17  13:38    <DIR>          Downloads
2018-05-23  12:34    <DIR>          Favorites
2019-08-14  01:50    <DIR>          Links
2020-08-04  17:43    <DIR>          Music
2020-08-04  17:43    <DIR>          Pictures
2015-11-17  13:38    <DIR>          Saved Games
2020-08-04  17:43    <DIR>          Videos
© www.soinside.com 2019 - 2024. All rights reserved.