2017-03-08 4 views
-1

私は情報TLを残さずにできるだけこの投稿を減らそうとしました; DRは一番下に含まれています。バッチファイルをログファイルに出力するのを止めるには?

私は、短い

  • チェックサーバーB上の宛先フォルダに画像やテキストファイル用のサーバーA上の2つのフォルダ
  • コピーしたテキストファイル
  • コピー画像のスクリプトを継承している

    サーバーBのイメージの保存先フォルダにファイル

  • は、サーバーAでこれらのファイルをアーカイブします。
  • は、サーバーAで5日以上経過したファイルを削除します。
  • ここで0

スクリプト

@echo on 
set log=c:\temp\acsloadcopy.log 

set txtsrc=C:\Users\LCI\Desktop\txtsrc 
set imgsrc=C:\Users\LCI\Desktop\imgsrc 

set txtdest=C:\Users\LCI\Desktop\txtdest 
set imgdest=C:\Users\LCI\Desktop\imgdest 

set txtbak=%txtsrc%\Archive 
set imgbak=%imgsrc%\Archive 

rem set txtautonomy=\\idolget\tm\%TM10Environment%\ 

if ("%tm10acis%"=="") (
    call :stop 1 "No tmacis environment variable set - can't run" 
) 

if ("%tm10acis%"=="none") (
    call :stop 0 "No Acs server for this environment (tmacis=none)" 
) 

set _hh=%time:~0,2% 
if "%time:~0,1%"==" " set _hh=0%_hh:~1,1% 
SET TIMESTAMP=%DATE:~6,4%-%DATE:~3,2%-%DATE:~0,2%-%_hh%-%TIME:~3,2%-%TIME:~6,2% 

call :clean 

call :dochecks 
REM call :checkage %txtsrc% 

REM COPY TO ACSE 
xcopy %txtsrc%\*.* %txtdest% 
if ERRORLEVEL 1 call :stop 1 "error copying %txtsrc% %txtdest%" 

xcopy %imgsrc%\*.* %imgdest% 
if ERRORLEVEL 1 call :stop 1 "error copying %imgsrc% %imgdest%" 

REM to ARCHIVE 
move /y %txtsrc%\*.* %txtbak%\%TIMESTAMP% 
rem Xcopy %txtsrc%\*.* %txtbak%\%TIMESTAMP% 
if ERRORLEVEL 1 call :stop 1 "error moving %txtsrc% %txtbak%\%TIMESTAMP%" 

move /y %imgsrc%\*.* %imgbak%\%TIMESTAMP% 
rem Xcopy %imgsrc%\*.* %imgbak%\%TIMESTAMP% 
if ERRORLEVEL 1 call :stop 1 "error moving %imgsrc% %imgbak%\%TIMESTAMP%" 


REM CLEAN UP OLD ARCHIVES 

call :clean %txtbak% 
call :clean %imgbak% 

goto :eof 

:dochecks 
call :checkfolder %txtsrc% 
call :checkfolder %imgsrc% 
call :checkfolder %txtdest% 
call :checkfolder %imgdest% 
call :checkfolder %txtbak% 
call :checkfolder %imgbak% 

if not exist %txtbak%\%TIMESTAMP% mkdir %txtbak%\%TIMESTAMP% 
if ERRORLEVEL 1 call :stop 1 "Can't create archive folder %txtbak%\%TIMESTAMP% " 
if not exist %imgbak%\%TIMESTAMP% mkdir %imgbak%\%TIMESTAMP% 
if ERRORLEVEL 1 call :stop 1 "Can't create archive folder %imgbak%\%TIMESTAMP% " 
if exist %txtdest%\*.txt call :stop 1 "Previouly copied text files have not been processed by acs" 
if exist %imgdest%\*.jpg call :stop 1 "Previouly copied image files have not been processed by acs" 
if not exist %txtsrc%\*.txt call :stop 0 "No source text files" 
if not exist %imgsrc%\*.jpg call :stop 0 "No source image files" 

:skipcheck 
goto :eof 

:checkfolder 
set f=%1 
pushd %f% 
if ERRORLEVEL 1 call :stop "folder %f% does not exist" 
popd 
goto :eof 

:stop 
set exitcode=%1 
set exitmsg=%~2 

echo %exitmsg% 
exit %exitcode% 

言われて私の問題は、ログは、バッチファイルがここでやっているすべてのものを出力していることは、それのいくつかの例であるということです。

C:\Users\LCI\Desktop\testt>if ERRORLEVEL 1 call :stop 1 "error copying 

C:\Users\LCI\Desktop\txtsrc C:\Users\LCI\Desktop\txtdest" 

C:\Users\LCI\Desktop\testt>xcopy C:\Users\LCI\Desktop\imgsrc\*.* C:\Users\LCI\Desktop\imgdest 
C:\Users\LCI\Desktop\imgsrc\dwqd.jpg 
1 File(s) copied 

C:\Users\LCI\Desktop\testt>if ERRORLEVEL 1 call :stop 1 "error copying C:\Users\LCI\Desktop\imgsrc C:\Users\LCI\Desktop\imgdest" 

C:\Users\LCI\Desktop\testt>REM to ARCHIVE 

C:\Users\LCI\Desktop\testt>move /y C:\Users\LCI\Desktop\txtsrc\*.* C:\Users\LCI\Desktop\txtsrc\Archive\2017-03-08-10-34-41 
C:\Users\LCI\Desktop\txtsrc\awd.txt 
C:\Users\LCI\Desktop\txtsrc\dwdw.txt 
C:\Users\LCI\Desktop\txtsrc\wwqwq.txt 
     3 file(s) moved. 

C:\Users\LCI\Desktop\testt>rem Xcopy C:\Users\LCI\Desktop\txtsrc\*.* C:\Users\LCI\Desktop\txtsrc\Archive\2017-03-08-10-34-41 

C:\Users\LCI\Desktop\testt>if ERRORLEVEL 1 call :stop 1 "error moving C:\Users\LCI\Desktop\txtsrc C:\Users\LCI\Desktop\txtsrc\Archive\2017-03-08-10-34-41" 

C:\Users\LCI\Desktop\testt>move /y C:\Users\LCI\Desktop\imgsrc\*.* C:\Users\LCI\Desktop\imgsrc\Archive\2017-03-08-10-34-41 
C:\Users\LCI\Desktop\imgsrc\dwqd.jpg 
     1 file(s) moved. 

C:\Users\LCI\Desktop\testt>rem Xcopy C:\Users\LCI\Desktop\imgsrc\*.* C:\Users\LCI\Desktop\imgsrc\Archive\2017-03-08-10-34-41 

C:\Users\LCI\Desktop\testt>if ERRORLEVEL 1 call :stop 1 "error moving C:\Users\LCI\Desktop\imgsrc C:\Users\LCI\Desktop\imgsrc\Archive\2017-03-08-10-34-41" 

C:\Users\LCI\Desktop\testt>REM to AUTONOMY 

    C:\Users\LCI\Desktop\testt>rem if ERRORLEVEL 1 call :stop 1 "error creating \2017-03-08-10-34-41" 

これはとして特にうるさいですいくつかのユリウスの日付計算をしています(私は、すでにテキストの壁を減らすために私が提出したスクリプトからこれらを取り出しています)。

正常に完了したかどうかにかかわらず、すべての行が出力されるだけで、何か問題が生じた場合に解釈が苦しくなります。

私はちょうどそれが部分的に/正常に完了した場合、ログを表示する、および/またはそれがエラー(上記から分かるように)遭遇した場合:

C:\Users\LCIAV\Desktop\txtsrc\awd.txt 
C:\Users\LCIAV\Desktop\txtsrc\dwdw.txt 
C:\Users\LCIAV\Desktop\txtsrc\wwqwq.txt 
    3 file(s) moved) 

を私だけに出力パイプを追加しようとしていますスクリプト内で私に使用されている行(xcopyとIF) - これは何も変わっていませんでした。

最後にフィルタを付けて別のバッチファイルでファイルを呼び出そうとしましたが、私が望むすべてを説明しようとする少しの頭痛になりました。

それはなぜそれがすべてを出力するとどのようにそれを

を解決するために、私はそれがすべてを出力し、その解決方法だ理由を理解する助けいただければ幸いだと私は失うのです。

よろしく

TL; DRバッチファイルのログは非常にうるさいですが、それはない出力のすべて - だけすなわち出力有用な情報にそれを軽減したいと思いますが、完全にそれをやったか、エラーやった

+0

スクリプトの先頭にログファイル名用の変数を定義していますが、出力をそのログファイルにリダイレクトするという単一のインスタンスは表示されません。 – Squashman

+0

プログラムの最初の行で、 'echo on'を設定します。あなたはエコーがオンであることに驚いていますか?あなたがすべてのコマンドecho'dを見たくなければ、 'echo off'を設定してください。これは驚くべきことではありません。 – abelenky

+0

@abelenky応答のための歓声。私はそれが驚いていない。それを "オフ"にすると、ログに "エコーはオフ"というメッセージが出力されます。 – Nighthawkz

答えて

4
(そしてなぜ!)

W
@echo off 

から

変化

@echo on 

コマンドエコーをオフにしてください。

あなたが言うように、TL; DR。echoで任意の文字列を画面に出力するか、不要な出力がある場合は、>nulを行に追加しないでください。エラーメッセージを表示しないように2>nulを入力してください。

+0

お返事ありがとうございました、私はそのことについて遊びます。 – Nighthawkz

+0

ありがとうございます。私はこれを使って、必要なものだけを置くことができました – Nighthawkz

関連する問題