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

时间:2017-02-01 15:08:11

标签: windows batch-file

这个问题与这个问题有关: 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

1 个答案:

答案 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%"