Batch file 批处理:如何从文本文件的目录路径中排除具有扩展名的文件名?

Batch file 批处理:如何从文本文件的目录路径中排除具有扩展名的文件名?,batch-file,Batch File,file.txt: C:\Program Files\Folder\file.exe 可以是.exe、.dll等 产出目标: C:\Program Files\Folder 迄今为止的代码: for /f "usebackq delims=" %%g in (`type file.txt ^| findstr /vc:".exe"`) do ( echo %%g ) 下面的示例假定所有列出的文件都有一个扩展名(包括一个句点,后跟2、3或4字符)。澄清

file.txt:

C:\Program Files\Folder\file.exe
可以是.exe、.dll等

产出目标:

C:\Program Files\Folder
迄今为止的代码:

for /f "usebackq delims=" %%g in (`type file.txt ^| findstr /vc:".exe"`) do ( echo %%g )

下面的示例假定所有列出的文件都有一个扩展名(包括一个句点,后跟
2
3
4
字符)。澄清一下,这意味着它将忽略任何没有句点的文件或最后一个叶目录,或以句点结尾,后跟
1
5
,或超过
5
,字符;但将拾取最后一个叶目录,该目录以
2
3
4
字符结尾:

@For/F Delims^=^EOL^=%%G In(''%\uuuu AppDir\uuuu%findstr.exe/ER“\..$\..$\..$\..$”file.txt“2^>NUL”)Do@For%%H In(“%%~dpG.”)Do@Echo%%~dpnxH
请注意,我在上面的示例中直接使用了
findstr.exe
。如果没有得到预期的结果,则源文件
file.txt
可能是Unicode。在这种情况下,您应该恢复到使用
type
命令管道传输内容,如原始发布:

@For/F Delims^=^EOL^=%%G In('Type“file.txt”2^>NUL^\\%\uu AppDir\uuuu%findstr.exe/ER“\…$\…$\…$”)Do@For%%H In(“%%dpG.”)Do@Echo%%dpnsh

如果文件中的每一项或您需要的每一项都存在于系统中,那么代码可以变得更加健壮。(但这目前超出了您非常有限的问题标准的范围)。

请查看
for
命令、
for/?
的帮助信息,并注意它的变量替换修饰符。我不确定如何使用它,但这如何派上用场?我从一个文本文件中获取此路径信息。不如改为
echo%%~dpg
?第二个选项有效,非常感谢。我还应该去哪里学习通配符函数和变量替换?每个内置命令都有一个帮助函数,通常可以使用
commandname/?
help commandname
commandname--help
访问。有关通配符和变量替换的信息可从
for/?
findstr/?
的输出中获得。本网站不提供关于第三方学习地点的建议,因此我的建议是内置帮助(如上所述),或从官方网站寻求有关您所需信息的命令或实用程序制造商的其他帮助。