0

I Hae BAT ファイルを作成する

@ECHO OFF
"C:\Program Files\Microsoft SQL Server\100\DTS\Binn\dtexec.exe" /FILE "D:\New folder (2)\xslttosql\SSIS-BSMS\SSIS-BSMS\SSIS-BSMS\Package6.dtsx" /REP P >> "D:\TRX_Value.log"
exit 

しかし、パスが動的に変更された出力を作成D:\TRX_Value.log し、ファイル名の時間情報を提供しD:\TRX_Value-20130307-144650.logたい2012/03/07 14:46:50

それで、それは可能ですか?どのようなスクリプトを作成すればよいですか?

4

4 に答える 4

3

BAT ファイルでの日付の扱いはややこしいものです。

簡単な解決策は、コマンドで直接解析する便利な方法で現在の日付と時刻を返すWMIC LocalTimeFORコマンドを使用することです。これに似たものを試してください:

@ECHO OFF
FOR /F "skip=1 tokens=1-6" %%A IN ('WMIC Path Win32_LocalTime Get Day^,Hour^,Minute^,Month^,Second^,Year /Format:table') DO (
  SET /A DT=%%F*10000+%%D*100+%%A
  SET /A TM=%%B*100+%%C
  SET FDT=%DT%-%TM%
 )
ECHO "c:\progs\dtexec" /FILE "d:\fldr\pack.dtsx" /REP P "d:\logs\tr%FDT%.log"

結果を確認し、要件に合わせて実行行を修正します

于 2013-03-07T13:55:05.820 に答える
2

私は WMIC を使用するという PA の提案を気に入っていますが、もっと単純な WMIC の実装があります。

OS エイリアスには、必要なほぼ正確な形式の localDateTime プロパティがあります。

YYMMDDhhmmss.ffffff-zzz

ここで、ffffffは小数秒、zzzはタイム ゾーン情報です。単純な部分文字列操作により、目的の日付と時刻の形式が提供されます。

@echo off
setlocal
set "ts="
for /f "skip=1" %%A in ('wmic os get localDateTime') do if not defined ts set "ts=%%A"
... your exe call ... >>"D:\TRX_Value-%ts:~0,8%-%ts:~8,6%.log"
于 2013-03-07T15:32:53.730 に答える
1

私はチャレンジが好きなので、タイムスタンプを好きなようにフォーマットするバッチ スクリプト/JScript ハイブリッド スクリプトを次に示します。.bat拡張子を付けて保存してください。

@if (@X)==(@Y) @end /* (batch + jscript hybrid script init)

:: *** Batch script *****

@echo off
setlocal
for /f %%I in ('cscript /nologo /e:jscript "%~f0"') do set "ts=%%I"
"C:\Program Files\Microsoft SQL Server\100\DTS\Binn\dtexec.exe" /FILE "D:\New folder (2)\xslttosql\SSIS-BSMS\SSIS-BSMS\SSIS-BSMS\Package6.dtsx" /REP P >> "D:\TRX_Value-%ts%.log"
exit /b

:: *** JScript script *****/

var d = new Date();
WScript.echo(d.getFullYear() + /\d{2}$/.exec('0' + (d.getMonth() + 1)) + /\d{2}$/.exec('0' + d.getDate()) + '-'
+ /\d{2}$/.exec('0' + d.getHours()) + /\d{2}$/.exec('0' + d.getMinutes()) + /\d{2}$/.exec('0' + d.getSeconds()));

(dbenham はこの種のマスターです。)

于 2013-03-07T14:39:09.990 に答える
1

日付と時刻を 2 つの一時ファイルにエコーし、それらを正しい形式に解析して、コマンドで使用します。

@ECHO OFF
Set CURRDATE=%TEMP%\CURRDATE.TMP
ECHO %DATE% > %CURRDATE%
Set CURRTIME=%TEMP%\CURRTIME.TMP
ECHO %TIME% > %CURRTIME%

Set PARSEDATEARG="eol=; tokens=1,2,3,4* delims=/, "
Set PARSETIMEARG="eol=; tokens=1,2,3,4,5* delims=:,., "
For /F %PARSEDATEARG% %%i in (%CURRDATE%) Do SET YYYYMMDD=%%k%%j%%i
For /F %PARSETIMEARG% %%i in (%CURRTIME%) Do SET HHMMSS=%%i%%j%%k

"C:\Program Files\Microsoft SQL Server\100\DTS\Binn\dtexec.exe" /FILE "D:\New folder (2)\xslttosql\SSIS-BSMS\SSIS-BSMS\SSIS-BSMS\Package6.dtsx" /REP P >> "D:\TRX_Value-%YYYYMMDD%-%HHMMSS%.log" exit
于 2013-03-07T14:43:43.090 に答える