我有一个CSV文件,每行要删除的前导和结尾双引号都包含在内,并做了DOS批处理。以下适用于显式路径:
@echo off
setlocal enabledelayedexpansion
for /F "tokens=*" %%A in (C:\Folder\WrappedInQuotes.csv) do (
set line=%%A
echo !line:~1,-1! >> C:\Folder\UnWrapped.csv
)
当然,如果路径中有空格,则以下操作将无效:
@echo off
setlocal enabledelayedexpansion
for /F "tokens=*" %%A in (C:\Folder\Sub Folder\WrappedInQuotes.csv) do (
set line=%%A
echo !line:~1,-1! >> C:\Folder\Sub Folder\UnWrapped.csv
)
({@echo on
,消息当然是“ ...cannot find the file C:\Folder\Sub
”)
作为下一步测试,我只是将两个显式文件规范包装在双引号中:
@echo off
setlocal enabledelayedexpansion
for /F "tokens=*" %%A in ("C:\Folder\Sub Folder\WrappedInQuotes.csv") do (
set line=%%A
echo !line:~1,-1! >> "C:\Folder\Sub Folder\UnWrapped.csv"
)
对于@echo on
,For
似乎正在获取正确的文件规范(原始CSV),但是现在目标CSV具有了
:\Folder\Sub Folder\EachLineWrappedInQuotes.cs
(源CSV完整文件规范,删除了第一个和最后一个字符),而不是源CSV的内容删除了第一个和最后一个字符(双引号)。
最终,我想用像%~dp0
这样的路径变量来替换显式路径,但是还没有通过“下一步测试”。
(我试图通过研究已经给出的许多答案来解决这个问题,但没有成功,抱歉!)
答案 0 :(得分:0)
要获取文件的内容并删除双引号而不需要设置变量,请设置usebackq
方法1:
@echo off
for /F "usebackq tokens=*" %%A in ("C:\Folder\Sub Folder\WrappedInQuotes.csv") do (
echo %%~A >> "C:\Folder\Sub Folder\UnWrapped.csv"
)
方法2,如果仍然要设置变量:
@echo off
setlocal enabledelayedexpansion
for /F "usebackq tokens=*" %%A in ("C:\Folder\Sub Folder\WrappedInQuotes.csv") do (
set line=%%~A
echo !line! >> "C:\Folder\Sub Folder\UnWrapped.csv"
)
或者使用type
:
@echo off
for /F "tokens=*" %%A in ('type "C:\Folder\Sub Folder\WrappedInQuotes.csv"') do (
echo %%~A >> "C:\Folder\Sub Folder\UnWrapped.csv"
)