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

Windows 尝试将函数的结果设置为变量,windows,batch-file,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 您的代码的作用: dir /b /s /a-d "%%a:\gm_construct.bsp" set p=%%~dpnxa 列出所有文件%%a:\

当我试图运行这个程序时,它没有正确设置变量。是否仍存在这样的情况,以便在完成后将文件位置(而不是文件本身)设置为变量,并将其打印在屏幕上

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

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

我认为你想要做的是:

dir /b /s /a-d "%%a:\gm_construct.bsp"
并将其输出设置为变量%p%

要获取命令的输出,您需要另一个:

将单引号的类型集成到代码注释中:':


暂停

哪个变量设置不正确?它当前被设置为什么,您希望它被设置为什么?上面代码中的变量p。当我试图在代码的其他地方使用它时,它不起作用。我想将其设置为文件位置,而不是文件位置,但不确定如何准确地执行此操作,我不知道它设置为什么。因此,您想将其设置为dir命令的输出?您是否测试过代码的所有其他部分是否正常工作,即它在找到文件时实际运行dir命令?您是否想过在其中搜索?像这样的问题有很多…可能是重复的,除了在路径后给出文件名,我只想将其设置到任何帮助中的文件夹中。%~dpnxi表示驱动器、路径、名称和%%i的扩展名。所以你可能想要%%~d谢谢你,我应该考虑一下。我花了两个小时想弄明白。
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