首页 > 解决方案 > 如何使用批处理解析和回显多个文件路径

问题描述

我创建了一个批处理文件,它将回显或打印文件的路径。显然,当我将多个文件作为参数发送到所述批处理文件时,我无法打印路径。

@echo off

setlocal ENABLEDELAYEDEXPANSION
set string=%1
set string=!string:\=%%5C!

@echo %string% > D:\Playground\test.txt

任何帮助将非常感激。如果有任何不清楚的地方,请告诉我。谢谢。

注意:我使用以下过程将文件发送到批处理文件:

我不知道这些信息是否有帮助,但我不想把它排除在我的问题之外。

标签: batch-file

解决方案


%*将捕获以空格分隔的每个输入字符串,enabledelayedexpansion应该像set在代码块 () 中那样使用。我们还将变量括起来,包括用双引号引起来的变量名:

@echo off
setlocal enabledelayedexpansion
for %%a in (%*) do (
 set "string=%%~a"
 set "string=!string:\=%%5C!"
 echo !string! >> D:\Playground\test.txt
)

如您所见,您需要使用for循环来迭代每个输入字符串,即%1 %2%3

作为旁注您还可以将文件拖放到批处理文件中以获取结果。

编辑

根据要求添加了引号删除,set "string=!string:"=!"但请注意,如果路径包含空格,则使用字符串作为路径而不引用它们将在将来导致问题。

要在没有换行符的情况下通过管道传输到文件:

@echo off
setlocal enabledelayedexpansion
for %%a in (%*) do (
 set "string=%%~a"
 set "string=!string:\=%%5C!"
 echo|set /p="!string! " >> D:\Playground\test.txt
)

推荐阅读