Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 将文件目录分配给变量_Batch File_Cmd - Fatal编程技术网

Batch file 将文件目录分配给变量

Batch file 将文件目录分配给变量,batch-file,cmd,Batch File,Cmd,在CMD中,我可以使用以下命令搜索文件: DIR /S /B PROGRAM.EXE 如果找到该文件,结果将是: C:\Users\Dev\Desktop\Program.exe 我希望在输出中只输入不带文件名C:\Users\Dev\Desktop\的目录,以便仅为变量分配路径 在CMD上有什么方法可以做到这一点吗?使用循环,如下所示: For/F“Delims=“%A In('Dir/B/S/A-D”Program.exe“2^>Nul”)Do@Echo=%dpA 将批处理文件中的%加倍

在CMD中,我可以使用以下命令搜索文件:

DIR /S /B PROGRAM.EXE
如果找到该文件,结果将是:

C:\Users\Dev\Desktop\Program.exe

我希望在输出中只输入不带文件名
C:\Users\Dev\Desktop\
的目录,以便仅为变量分配路径


在CMD上有什么方法可以做到这一点吗?

使用
循环,如下所示:

For/F“Delims=“%A In('Dir/B/S/A-D”Program.exe“2^>Nul”)Do@Echo=%dpA
将批处理文件中的
%
加倍

在批处理文件中,要将任何匹配项设置为变量,请使用以下结构:

@Echo关闭
设置“i=0”
对于/F“Delims=“%%A In('Dir/B/S/A-D”Program.exe“2^>Nul”)Do(设置/A“i+=1”
调用集“OnlyPath[%%i%%]=%%~dpA”)
仅设置路径[
超时-1

每个匹配项都将设置为不同的变量,以确保如果进行了多个匹配项,您将检索所有匹配项。

使用
进行如下循环:

For/F“Delims=“%A In('Dir/B/S/A-D”Program.exe“2^>Nul”)Do@Echo=%dpA
将批处理文件中的
%
加倍

在批处理文件中,要将任何匹配项设置为变量,请使用以下结构:

@Echo关闭
设置“i=0”
对于/F“Delims=“%%A In('Dir/B/S/A-D”Program.exe“2^>Nul”)Do(设置/A“i+=1”
调用集“OnlyPath[%%i%%]=%%~dpA”)
仅设置路径[
超时-1

每个匹配项都将设置为不同的变量,以确保如果进行了多个匹配项,您可以检索所有匹配项。

使用批处理文件,您可以执行以下操作:

@echo关闭
设置“工作文件夹=%userprofile%\Desktop”
对于/F“Delims=“%%F In('Dir/B/S/A-D”%Working\u Folder%\PROGRAM.exe“2^>Nul”)执行(
设置“MyFolder=%%~dpF”
)
回显“%MyFolder%”(&pause>nul

使用批处理文件,您可以执行以下操作:

@echo关闭
设置“工作文件夹=%userprofile%\Desktop”
对于/F“Delims=“%%F In('Dir/B/S/A-D”%Working\u Folder%\PROGRAM.exe“2^>Nul”)执行(
设置“MyFolder=%%~dpF”
)
回显“%MyFolder%”(&pause>nul

您的工作文件夹始终位于您的桌面上?您的工作文件夹始终位于您的桌面上?谢谢您的帮助,但我无法使其正常工作。我只是复制并粘贴了此代码并修改了程序名。您测试了吗?我不需要测试它,因为它是基本的编码,工作正常。唯一的方法可能是没有t work是指您没有从与以前运行的命令行相同的位置运行它。由于您没有足够的责任提供一个位置,我不得不假设您将在like-for-like mannerThanks中进行测试。谢谢帮助,但我无法使其工作。我只是复制并粘贴了此代码,并修改了程序名。您知道吗测试它?我不需要测试它,因为它是基本的编码,它可以正常工作。唯一可能不工作的方法是,如果您没有从与以前运行的命令行相同的位置运行它。由于您没有足够的责任提供一个位置,我不得不假设您将以类似的方式进行测试