batch-file - 如何使用批处理解析和回显多个文件路径
问题描述
我创建了一个批处理文件,它将回显或打印文件的路径。显然,当我将多个文件作为参数发送到所述批处理文件时,我无法打印路径。
@echo off
setlocal ENABLEDELAYEDEXPANSION
set string=%1
set string=!string:\=%%5C!
@echo %string% > D:\Playground\test.txt
任何帮助将非常感激。如果有任何不清楚的地方,请告诉我。谢谢。
注意:我使用以下过程将文件发送到批处理文件:
- 右键单击文件
- 发送至
- 选择我在 sendTo 中创建的菜单项,它将文件传递给批处理文件
我不知道这些信息是否有帮助,但我不想把它排除在我的问题之外。
解决方案
%*
将捕获以空格分隔的每个输入字符串,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
)
推荐阅读
- ckeditor5 - Ckeditor5 - 防止/删除历史堆栈中的一些操作
- vue.js - Can a user edit Vue.js Instance Properties from browsers
- php - Magento 2 - 限制从 API 返回的字段数和错误的时间格式
- ethereum - 间接合约的函数调用消耗了谁的gas?
- wix - 如何读取作为 MSI 包的一部分嵌入的 json 文件并在 MSI UI 的组合框中填充值?
- image - Android studio 降低图片质量
- c++ - QAudioInput:无法打开音频设备
- javascript - 在另一个数组中满足某个值后如何触发获取数组的下一个元素
- .net-core - 将syncfusion图表导出到指定路径
- python - 无法从 BigQuery 中的工作表查询表