当路径包含空格或使用变量时,无法使用%var%测试程序的输出 尝试以下脚本,仅最后一个起作用(任务数为“ 0”)
SET MYTEST1="C:\Program Files\boinc\"
SET MYTEST2="C:\Progra~1\boinc\"
FOR /F "tokens=* USEBACKQ" %%F IN (`%MYTEST1%boinccmd.exe --get_tasks ^| find /i /c "executing"`) DO (
SET NumMasterTasks=%%F
)
FOR /F "tokens=* USEBACKQ" %%F IN (`%MYTEST2%boinccmd.exe --get_tasks ^| find /i /c "executing"`) DO (
SET NumMasterTasks=%%F
)
FOR /F "tokens=* USEBACKQ" %%F IN (`C:\Program Files\boinc\boinccmd.exe --get_tasks ^| find /i /c "executing"`) DO (
SET NumMasterTasks=%%F
)
FOR /F "tokens=* USEBACKQ" %%F IN (`C:\Progra~1\boinc\boinccmd.exe --get_tasks ^| find /i /c "executing"`) DO (
SET NumMasterTasks=%%F
)
这是输出:
C:\Program Files\boinc>SET MYTEST1="C:\Program Files\boinc\"
C:\Program Files\boinc>SET MYTEST2="C:\Progra~1\boinc\"
C:\Program Files\boinc>FOR /F "tokens=* USEBACKQ" %F IN (`"C:\Program Files\boinc\"boinccmd.exe --get_tasks | find /i /c "executing"`) DO (SET NumMasterTasks=%F )
'C:\Program' is not recognized as an internal or external command,operable program or batch file.
C:\Program Files\boinc>FOR /F "tokens=* USEBACKQ" %F IN (`"C:\Progra~1\boinc\"boinccmd.exe --get_tasks | find /i /c "executing"`) DO (SET NumMasterTasks=%F )
The filename,directory name,or volume label syntax is incorrect.
C:\Program Files\boinc>FOR /F "tokens=* USEBACKQ" %F IN (`C:\Program Files\boinc\boinccmd.exe --get_tasks | find /i /c "executing"`) DO (SET NumMasterTasks=%F )
'C:\Program' is not recognized as an internal or external command,operable program or batch file.
C:\Program Files\boinc>FOR /F "tokens=* USEBACKQ" %F IN (`C:\Progra~1\boinc\boinccmd.exe --get_tasks | find /i /c "executing"`) DO (SET NumMasterTasks=%F )
C:\Program Files\boinc>(SET NumMasterTasks=0 )
一个有效的方法有两个问题: 我想将变量用于路径而不是硬代码路径, 不方便地,“程序文件”并不总是像
一样是“ Progra〜1” Directory of Y:\
11/04/2019 10:12 AM <DIR> .
11/04/2019 10:11 AM <DIR> ..
11/04/2019 10:11 AM <DIR> PL6FPL~Q Program Files
11/04/2019 10:12 AM <DIR> PT8A6Y~T Program Files (x86)
0 File(s) 0 bytes
4 Dir(s) 4,778,356,477,952 bytes free
尝试了以下操作(谢谢斯蒂芬!)
SET "ROOTBIN=C:\Progra~1\boinc\"
FOR /F "tokens=* USEBACKQ" %%F IN (`%ROOTBIN%boinccmd.exe --get_tasks ^| find /i /c "executing"`) DO (
SET NumMasterTasks=%%F
)
但是,我使用了程序文件的简称,如果我在该空格中使用该名称,脚本将失败。
C:\Program Files\boinc>SET "ROOTBIN=C:\Progra~1\boinc\"
C:\Program Files\boinc>FOR /F "tokens=* USEBACKQ" %F IN (`C:\Progra~1\boinc\boinccmd.exe --get_tasks | find /i /c "executing"`) DO (SET NumMasterTasks=%F )
C:\Program Files\boinc>(SET NumMasterTasks=30 )