bat文件内容( 通过获取ps的write-output值来取得成功失败返回值。)
@echo off
REM ****************************************************************************
REM ID : COPYFILEBYNAME
REM 処理名 : 終了処理
REM 処理概要 : 戻り値によりメッセージ等を変更する。
REM 書式 : COPYFILEBYNAME.bat
REM 備考 : Powershellをコールする。
REM 履歴 : 2021.08.26 XXXX 新規作成
REM ****************************************************************************
REM ----------------------------------------------------------------------------
REM プログラム起動
REM ----------------------------------------------------------------------------
echo ------------------
echo %date% %time:~0,8% COPY FILE BAT開始
echo ------------------
REM ****************************************************************************
REM 実行
REM ****************************************************************************
REM powershell set-ExecutionPolicy RemoteSigned
REM powershell D:\WORK\CopyFileByName.ps1
set pscmdline='powershell.exe -file D:\WORK\CopyFileByName.ps1'
for /f %%a in (%pscmdline%) do (set var=%%a)
REM ****************************************************************************
REM プログラム終了
REM ****************************************************************************
set RETCD_DETAIL=%var%
echo ------------------
echo %date% %time% 終了(CopyFileByName.ps1 戻り値=[%RETCD_DETAIL%])
echo ------------------
echo %date% %time:~0,8% COPY FILE BAT終了
echo ------------------
REM ----------------------------------------------------------------------------
REM 終了
REM ----------------------------------------------------------------------------
exit /b %RETCD_DETAIL%
endlocal
powershell文件内容(实现文件夹之间定时文件复制机能)
#******************************************************************
#* *
#* 部品名:サーバー間ファイルコピー *
#* *
#* ver 作成者 日付 変更内容 *
#* -------------------------------------------------------------- *
#* 1.0.0 XXXX 2021/8/6 初版 *
#* *
#* Copyright(C) Nomura Research Institute, Ltd. *
#* All rights reserved. *
#* *
#******************************************************************
## ファイル名 : CopyFileByName.ps1
## 処理概要 : サーバー間ファイルコピー機能
## 引数 : なし
## リターン値 : 0(正常終了)
## リターン値 : 1(処理失敗)
## 入力ファイル : なし
## 出力ファイル : なし
## 使用外部コマンド :
## 使用外部環境変数 :
## 実行ユーザID : senju
## 注意事項 : 特になし
#-----------------------------------------------------------------
# 定数定義
#-----------------------------------------------------------------
# 例外発生時は処理を停止する
$ErrorActionPreference = "Stop"
###########################################################################
# 共通変数定義
###########################################################################
$msg_Exception = "例外が発生しました。"
###########################################################################
# 初期処理
###########################################################################
# --- 変数定義&初期化 ---
$rtn_cd = 0 # リターンコード
$my_script = $MyInvocation.mycommand.name # スクリプトファイル名
#-----------------------------------------------------------------
# メイン処理
#-----------------------------------------------------------------
$IniFile="D:\WORK\LastExecuteTime.ini"
$PathFrom="D:\WORK\データ元\"
$PathTo="D:\WORK\データ先\"
$DateTime=type $IniFile
$regex = "\d{8}_\d{6}(?=\.dat)"
TRY{
#net use \\10.100.1.1\ipc$ "aaa" /user:"administrator"
#Write-Host ("$DateTime=" + $DateTime)
Write-Host ("Start DateTime=" + (Get-Date -Format "yyyyMMdd_HHmmss"))
Get-ChildItem $PathFrom *.dat | ForEach-Object -Process{
# Write-Host('[regex].value=' + [regex]::matches($_.name, $regex).value);
if([regex]::matches($_.name, $regex).value -ge $DateTime) {
$file=$PathFrom+$_.name
# Write-Host($file);
copy $file $PathTo
}
}
Write-Host ("End DateTime=" + (Get-Date -Format "yyyyMMdd_HHmmss"))
Get-Date -Format "yyyyMMdd_HHmmss" | Out-File $IniFile
###########################################################################
# 後処理
###########################################################################
# --- 処理終了 ---
# リターンコード返却
#Write-Output ('$rtn_cd=' + $rtn_cd)
Write-Output ($rtn_cd)
#exit $rtn_cd
}
CATCH
{
# 例外を捕捉する (エラーはすべて例外として処理)
$err = $_
$error_msg = $err.Exception.Message
if ($error_msg -eq $null) {
$error_msg = "ERROR 予期せぬ例外が発生しました"
}
$msg_Exception = $msg_Exception+$error_msg
Write-Output ( ( Get-Date -format yyyy/MM/dd ) + " " `
+ ( Get-Date -format HH:mm:ss ) + " " `
+ $my_script + " " `
+ $error[0] )
$rtn_cd = 1
# Write-Output ('$rtn_cd=' + $rtn_cd)
Write-Output ($rtn_cd)
Pop-Location
break
}
记录最后一次执行日时的ini文件内容
执行结果