Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.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 - Fatal编程技术网

Batch file 如何使用批处理解析和回显多个文件路径

Batch file 如何使用批处理解析和回显多个文件路径,batch-file,Batch File,我创建了一个批处理文件,它将回显或打印文件的路径。显然,当我将多个文件作为参数发送到所述批处理文件时,我无法打印路径 @echo off setlocal ENABLEDELAYEDEXPANSION set string=%1 set string=!string:\=%%5C! @echo %string% > D:\Playground\test.txt 任何帮助都将不胜感激。如果有什么不清楚的,请告诉我。谢谢 注意:我使用以下过程将文件发送到批处理文件: 右键单击文件 寄往

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

@echo off

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

@echo %string% > D:\Playground\test.txt
任何帮助都将不胜感激。如果有什么不清楚的,请告诉我。谢谢

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

  • 右键单击文件
  • 寄往
  • 选择我在sendTo中创建的菜单项,该菜单项将文件传递到批处理文件

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

%*
将捕获通过空格分隔的每个输入字符串,
enabledelayedexpansion
应该像在代码块()内设置
一样使用。我们还用双引号将变量包括在内:

@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
)

它成功了。非常感谢。但是有没有可能用引号和新的LLINE打印出来呢?太棒了。非常感谢。它按预期工作。谢谢你的帮助。要删除外部双引号,我只需使用
set“string=%%~a”