0

我有一个循环遍历 .bat 文件目录的 Python 脚本。对于每个文件,它运行其批处理脚本,然后将输出与包含文件输出的保存文件进行比较,以测试 .bat 是否正确。现在我正在测试它,我把它作为一个测试文件:

@echo off
echo Good morning world and all who inhabit it! :D

然后我有这样的“解决方案”文件:

Good morning world and all who inhabit it! :D

这是检查文件的代码:

for _, _, files in os.walk(dir):
    for f in files:
        result = []
        fpath = os.path.join(jobs, os.path.basename(f))
        params = [fpath]
        result.append(subprocess.check_output([params]))

        expectedname = dir2 + os.path.basename(f) + ".test"
        expectedfile = open(expectedname, 'r')
        expected = []
        expected.append(expectedfile.read())
        print '\nEXPECTED: %s\nACTUAL:   %s' % (expected, result)

        if result == expected:
            print "\n%s is correct!\n" % (os.path.basename(f))
        else:
            print "\n%s gave incorrect output!\n" % (os.path.basename(f))

问题是,当 .bat 文件运行并产生其输出时,它\r\n的末尾添加了“”。我尝试通过将“ ”也放入解决方案文件来解决它,但是在读取时将其\r\n更改为“ ”。\\r\\n我怎样才能解决这个问题?

注意:显然 SO 的代码格式默认突出显示“和”,回显中单词的存在根本不会影响它的功能。只是不想让它混乱哈哈

4

1 回答 1

1

你可以在你的批次中尝试这个:

@echo off
<nul set /p "=Good morning world and all who inhabit it! :D"

顺便提一句。我对python一无所知。


我的第二个建议tr来自CoreUtils for Windows

@ECHO OFF &SETLOCAL
ECHO Good morning world and all who inhabit it! :D | tr -d \r
于 2013-09-04T13:00:39.367 回答