如果你想读取存储在变量INPUT
的文件,你需要阅读它作为%INPUT%
做到这一点(你说INPUT
从字面上看,奇数报价)。当您在for /F
集合中指定''
时,()
内的部分将被解释为命令而不是文件,因此for /F
会尝试执行命令input
,该命令无法找到,因此脚本失败。我强烈建议将""
与usebackq
选项一起放在指定文件的周围,以避免路径/文件名称中出现空白的问题。
如果要写入存储在变量OUTPUT
中的文件,则不得将echo
重定向到其他位置(您在代码中放置了>>"%~2"
)。
这里是作为我会写它的代码:
@echo off
setlocal EnableExtensions DisableDelayedExpansion
rem Define constants here:
set "INPUT=%~1"
set "OUTPUT=%~2"
if not defined INPUT exit /B 1
if not defined OUTPUT set "OUTPUT=con"
> "%OUTPUT%" (
for /F usebackq^ delims^=^ eol^= %%L in ("%INPUT%") do (
set "LINE=%%L"
setlocal EnableDelayedExpansion
echo(!LINE:^|^|=,!
endlocal
)
)
endlocal
exit /B
批处理程序输入文件必须作为第一个命令行参数来提供。第二个参数(可选)是输出文件。
请注意,此脚本不检查输入数据是否包含,
字符,这会影响转换文件的处理方式。
echo("!LINE:||=","!"
的输出数据(与原echo
命令行)看起来是这样的:如果你想要把周围返回的CSV数据,以避免数据解释烦恼的各个领域引号,以取代上述echo
命令行:
Customer Number,Customer Name,Partner Number,Partner Name,Customer Country
1ABC,Jame,1234,Anny,USA
2DEF,Susan,5678,Prissy,UK
与改性echo
命令行输出数据如下:
"Customer Number","Customer Name","Partner Number","Partner Name","Customer Country"
"1ABC","Jame","1234","Anny","USA"
"2DEF","Susan","5678","Prissy","UK"
好的。你有问题吗? –
@RB。我需要写一个批处理文件。要做到这一点 –
好的。什么阻止你这样做? (请注意,StackOverflow不是一个代码编写服务,我们可以帮助您解决所面临的特定问题,但不会为您编写代码) –