批处理:使用文件path从文本文件末尾删除换行

这个问题与这个问题有关: 批处理:从文本文件的末尾删除换行符?

所以我有一个txt文件包含一些信息,我想删除最后一行LFCR(换行符,回车)字符。

我需要使用variables和文件名作为参数(%1)来指出源文件path和目标文件path。

批次代码

@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 

Solutions Collecting From Web of "批处理:使用文件path从文本文件末尾删除换行"

在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%"