这个问题与这个问题有关: Batch: delete line feed from end of text file?
所以我有一个包含一些信息的txt文件,我想删除最后一行LFCR(换行,回车)字符。
我需要使用变量和文件名作为参数(%1)指出源文件路径和目标文件路径。
批次代码
@echo off
set @srcfile="D:\AgrCC\AgrTest\Report Results\%1"
set @dstfile="D:\AgrCC\AgrTest\Data Export\%1"
setlocal DisableDelayedExpansion
set "firstLineReady="
(
for /F "eol=$ delims=" %%a in (%@srcfile%) DO (
if defined firstLineReady (echo()
set "firstLineReady=1"
<nul set /p "=%%a"
)
) > %@dstfile%
但是我没有删除LFCR字符,而是在目标文件夹中找到了这样的文件:
目标文件内容
D:\AgrCC\AgrTest\Report Results\bg1baa.725
答案 0 :(得分:4)
在for循环中,您需要usebackq
选项,这样您仍然可以使用带引号的文件名来保护空格。
不要将引号添加到变量内容中,而是使用扩展的set syntax
。
set "var=content"`
你应该改变
set "@srcfile=D:\AgrCC\AgrTest\Report Results\%~1"
set "@dstfile=D:\AgrCC\AgrTest\Data Export\%~1"
...
for /F "usebackq eol=$ delims=" %%a in ("%@srcfile%") DO (
...
) > "%@dstfile%"