试图将函数的结果设置为变量

时间:2016-03-26 12:29:46

标签: windows batch-file

当我尝试运行此程序时,它不会将变量设置为正确。无论如何,以便在完成后将文件位置而不是文件本身设置为变量并将其打印在屏幕上。

@echo off
for %%a in (d) do if exist "%%a:\" dir /b /s /a-d "%%a:\gm_construct.bsp" set p=%%~dpnxa
pause

1 个答案:

答案 0 :(得分:3)

您的代码的作用:

"%%a:\gm_construct.bsp"

列出所有文件set以及名为p=%%~dpnxa的所有文件和名为dir /b /s /a-d "%%a:\gm_construct.bsp" 的所有文件

你想做什么(我认为):

%p%

并将其输出设置为变量for

要获得命令的输出,您需要另一个for /f "delims=" %%i in ('dir /b /s /a-d "%%a:\gm_construct.bsp"') do set p=%%~dpnxi

'

已集成到您的代码中(请注意单引号的类型:@echo off for %%a in (d) do ( if exist "%%a:\" ( for /f "delims=" %%i in ('dir /b /s /a-d "%%a:\gm_construct.bsp"') do set p=%%~dpnxi ) ) pause ):

{{1}}

暂停