我正在尝试使用file作为中介将命令输出重定向到变量。我能够将命令输出重定向到文件,但无法将文件内容读入变量。
批处理文件脚本
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
为我提供了文件内容。
如果批处理文件在同一个cmd窗口中终止后我echo %duration%
,它会让我上次返回。
我做错了什么?
答案 0 :(得分:1)
@echo off
pushd C:\Software
set "TEMP_DIR=C:\Users\prade\Softwares"
setlocal enableDelayedExpansion
for /D %%i in (*) do (
pushd "%%i"
echo %TIME% > "%TEMP_DIR%\a.log"
type %TEMP_DIR%\a.log
for /f "usebackq delims=" %%x in ("%TEMP_DIR%\a.log") do set "duration=%%x"
echo %%i !duration!
popd
)
popd
echo on
答案 1 :(得分:1)
在SETLOCAL EnableDelayedExpansion
下方添加ECHO OFF
并使用duration
访问!duration!
,而不是%{%}。