set命令返回的值始终为空

时间:2014-10-23 00:03:39

标签: batch-file

我有以下Windows批处理文件:

@echo off
setlocal ENABLEDELAYEDEXPANSION ENABLEEXTENSIONS
cd "C:\Users\jgsyl_000\Music\iTunes\iTunes Media\Music\"

for /d  %%G in (*) do (
    Pushd %%G
    rem Echo now in %%G
    for /D %%a in (*) do (
        pushd %%a
        rem Echo now in %%a
        dir /B > tempfile.txt
        set /p teste=< tempfile.txt
        echo "%teste%"
        TaggerSharp.exe "%teste%" -b >> "C:\Users\jgsyl_000\Music\Statistics\Albums.txt"
        del tempfile.txt
        popd
    )   
    Popd
)

具体问题是set /p teste = < tempfile.txt的结果。当我从这个批处理文件中运行它时,该值始终为空字符串。当我从一个单独的批处理文件中运行set命令时,任何循环,它都可以正常工作。关于我缺少什么的任何建议?

2 个答案:

答案 0 :(得分:0)

我收到了两个问题的答案:1)来自@SachaDee和2)@Scott C.我无法直接回复或评论@SachaDee。我回复了对@Scott C的评论。我找不到该网站的帮助所说的任何选中标记,以便将我的问题标记为已回答,所以我正在回答我自己的问题。也许主持人可以回复并关闭这个问题,作为@SachaDee和@Scott C

的回答

答案 1 :(得分:0)

这可以通过使用转义字符(^)吗?

set /p teste=^< tempfile.txt

此外,您可能必须使用!test!

替换%tester%