【发布时间】:2015-05-20 11:46:24
【问题描述】:
我正在尝试使用文件作为中介将命令输出重定向到变量。我能够将命令输出重定向到文件,但无法将文件内容读入变量。
批处理文件脚本
echo off
pushd C:\Software
set TEMP_DIR=C:\Users\prade\Softwares
for /D %%i in (*) do (
pushd "%%i"
echo %TIME% > %TEMP_DIR%\a.log
type %TEMP_DIR%\a.log
for /f "delims=" %%x in (%TEMP_DIR%\a.log) do set duration=%%x
echo %%i %duration%
popd
)
popd
echo on
我给了我下面的输出
C:\Users\prade>echo off
7:36:47.86
AutoHotKey
7:36:47.86
cygwin64
7:36:47.86
ffmpeg-20150518-git-451be67-win64-static
7:36:47.86
mtn-200808a-win32
7:36:47.86
ProcessExplorer
7:36:47.86
tools
如您所见,目录名称后没有任何内容,但 type 给了我文件内容。
如果我echo %duration% 在批处理文件在同一个 cmd 窗口中终止后,它会给我最后一次。
我做错了什么?
【问题讨论】:
-
@Stephan,谢谢。总有一些新东西要学。 :)
-
@Stephan,这是否意味着我应该一直使用
!而不是%,使用!而不是%有什么危害和性能影响吗? -
发现这个link 解释了
setlocal enableDelayedExpansion的作用。基于此,我假设它应该一直使用,除非我们在解析时有特殊需要扩展。对吗? -
不,只是另一个是圆的:仅使用延迟变量,如果您在执行时有特定需要扩展。 this question的答案和cmets中有一些有趣的链接
标签: windows batch-file cmd