echo输出保存为param

时间:2016-09-21 10:46:47

标签: batch-file

我必须从文件夹中获取最新文件,然后在数据库中执行更多操作。所以我能够从文件夹中获取最近的文件,如下所示

.os cd "C:\Users\krishha\Desktop\latest\"
.os for /f "delims=" %%x in ('dir /od /a-d /b *.*') do set recent=%%x
echo %recent% --GIVES THE RECENT FILENAME

我想使用上面的输出,即最近的文件名到echo语句下面

echo .import vartext '  ' file = C:\Users\krishha\Desktop\latest\'WANT OUTPUT OF ABOVE ECHO HERE' >>C:\Users\krishha\Desktop\latest\h.txt

我尝试了下面的脚本,但没有得到任何

echo .Logon Teradata/username,password;>> C:\Users\krishha\Desktop\latest\h.txt
.os cd "C:\Users\krishha\Desktop\latest\"
.os for /f "delims=" %%x in ('dir /od /a-d /b *.*') do set recent=%%x
echo %recent%
echo .import vartext '  ' file = C:\Users\krishha\Desktop\latest\%recent%,skip=1;>>C:\Users\krishha\Desktop\latest\h.txt
echo .REPEAT * >>C:\Users\krishha\Desktop\latest\h.txt

---我在%recent%

的位置变得空白

2 个答案:

答案 0 :(得分:2)

您应该能够像以前一样将环境变量包含在百分比符号中,从而回显您想要的环境变量:

echo .import vartext '  ' file = C:\Users\krishha\Desktop\latest\%recent%' >>C:\Users\krishha\Desktop\latest\h.txt

在我的电脑上执行以下操作

for /f "delims=" %%x in ('dir /od /a-d /b .') do set recent=%%x 
echo .import vartext '  ' file = C:\Users\krishha\Desktop\latest\%recent%'

给我

.import vartext '  ' file = C:\Users\krishha\Desktop\latest\test4.bat '

答案 1 :(得分:1)

我认为您没有显示批处理文件的重要部分,否则@FloatingKiwi的解决方案将起作用。

也许你的完整代码在括号内,而不是它可以解释你的结果。

为了避免扩展百分比和阻止问题,您可以使用延迟扩展,这也可以避免最近文件名中的)&等内容出现问题。最后我将在单个块中构建输出,因此您只需要一次文件重定向。

setlocal EnableDelayedExpansion
cd "C:\Users\krishha\Desktop\latest\" 
for /f "delims=" %%x in ('dir /od /a-d /b .') do set "recent=%%x"
(
    echo .Logon Teradata.gdw.cba/username\password;
    echo .import vartext '  ' file = C:\Users\krishha\Desktop\latest\!recent!,skip=1;
    echo .REPEAT *
    echo USING (
    echo a varchar(500^)
) >> C:\Users\krishha\Desktop\latest\h.txt