我正在尝试在批处理文件中运行move命令。 我几乎用它做得很好......
Move /Y "%1\%2 %3" %4 >nul
:: and this for decision making and logging...
if %errorlevel%==0 GOTO DONE
if %errorlevel%==1 GOTO FAILED
注意:%1-4是我从另一个批处理文件传递的变量,它们基本上是文件的原始路径,文件名和新路径。
但我想将命令的输出捕获到一个变量中,以便写入日志并在同一批次内做出决策...... 我指的输出是 移动了1个文件。什么时候成功 或者 找不到网络路径。什么时候找不到文件 或任何其他消息
到目前为止,我已经尝试过这个......
for /f "tokens=*" %%a in ('Move /Y "%1\%2 %3" %4') do set FailReason=%%a
即使此举仍然有效...... 我无法捕捉上面列出的输出......
非常感谢任何帮助。 提前谢谢。
答案 0 :(得分:1)
这将让您将STDERR以及STDOUT变为变量:
@echo off
for /f "delims=" %%a in ('Move /Y "%1\%2 %3" %4 2^>^&1 ') do echo %%a
答案 1 :(得分:0)
@ECHO OFF
SETLOCAL
SET "sourcedir=c:\sourcedir"
SET "destdir=c:\destdir"
DEL "%destdir%\test*">NUL 2>nul
FOR /l %%i IN (1,1,4) DO COPY /y NUL "%sourcedir%\testfile %%i.txt" >nul
COPY /y NUL "%destdir%\testfile 2.txt" >NUL
COPY /y NUL "%destdir%\testfile 4.txt" >NUL
ATTRIB +r "%destdir%\testfile 4.txt"
:: 5 tests - OK, destfile exists, destfile R/O, sourcefile not found, sourcedir does not exist
CALL :testmove %sourcedir% testfile 1.txt %destdir%
CALL :testmove %sourcedir% testfile 2.txt %destdir%
CALL :testmove %sourcedir% testfile 4.txt %destdir%
CALL :testmove %sourcedir% testfile 5.txt %destdir%
CALL :testmove \unknowndir testfile 5.txt %destdir%
ATTRIB -r "%destdir%\testfile 4.txt"
GOTO :eof
:testmove
FOR /f "delims=" %%i IN ('Move /Y "%1\%2 %3" %4 2^>^&1') DO SET reason=%%i
ECHO %* produced ERRORLEVEL %ERRORLEVEL% and reason %reason%
GOTO :EOF
ERRORLEVEL
似乎总是为0 ......