2014-03-12 44 views
0

脚本:CMD输出到LOGFILE.TXT

pushd "\\server1\share\Data\" 
for %%p in (*.pdf) do if /i ".pdf"=="%%~xp" for /f "tokens=1 delims=_" %%n in ("%%~np") do ( 
    copy "%%~fp" ""\\server2share\data\%%~n\%%~nxp" dir >> \\server\share\logfile.txt 

) 

我想记录输出每次运行此命令。该脚本根据名称复制pdf。但是当我运行脚本。没有创建日志文件。

回答

0

编辑以适应评论

pushd "\\server1\share\Data\" 
set "logFile=\\server\share\logfile.txt" 
for %%p in (*.pdf) do if /i ".pdf"=="%%~xp" for /f "tokens=1 delims=_" %%n in ("%%~np") do ( 
    if not exist ""\\server2share\data\%%~n\" (
     >>"%logFile%" echo SKIPPED : "%%~nxp" 
    ) else (
     copy "%%~fp" "\\server2share\data\%%~n\%%~nxp" 
     if errorlevel 1 (
      >>"%logFile%" echo FAILED : "%%~nxp" 
     ) else (
      >>"%logFile%" echo COPIED : "%%~nxp" 
     ) 
    ) 
) 
popd 

你在一个陌生的地方,改为呼应DIR命令。而且,我不确定所有的路径是否正确。

+0

此评论在文件复制时添加了日志?而当它不存在它不记录? (我只想知道,仅此而已) – user3360442

+0

每个** PUSHD **都应该有相应的** POPD **。否则,如果您反复运行脚本,您将遇到内存泄漏和/或磁盘驱动器盘符被耗尽。 – vitsoft

+0

为什么?它只使用一个目录。 – user3360442

0
pushd "\\server1\share\Data\" 
for %%p in (*.pdf) do if /i ".pdf"=="%%~xp" for /f "tokens=1 delims=_" %%n in ("%%~np") do ( 
    md "\\server2share\data\%%~n" 2>nul 
    copy "%%~fp" "\\server2share\data\%%~n\%%~nxp" 
    dir >> \\server\share\logfile.txt 

) 

(未经测试)

我假设你的纸条是从原来的职位排列的方式。

如果要执行一系列单独的命令,它们需要用&分开,或者位于单独的行上。

你在你的copy命令有一个额外的

插入一个md命令的错误消息的抑制,以确保目标目录存在。

+0

md命令是否也使目录的? – user3360442

+0

是 - 'md'和'mkdir'是同义词。 – Magoo

+0

已经在目录中的文件夹已编程,所以不需要添加..我只想检查文件是否被复制(或不是)日志文件。 – user3360442

0

这将创建一个日志什么是上显示cmd的屏幕,而它正在运行,但你不会在屏幕上看到的任何输出。您可以使用tee过滤器,如果你还需要看到的画面输出。

mybatch.bat>file.log