ファイルを移動して名前を変更するPowershellスクリプト


1

免責事項:私はPowershellの理解がゼロです。最初はJavaでこれを行うつもりでしたが、代わりにスケジュールされたタスクを実行することにしました(PoShスクリプトの実行)。

これは私が持っているものです:

$ArmA2OA = Get-Process ArmA2OA - ErrorAction SilentlyContinue
$ChkFile =  "C:\Users\Mark27\AppData\Local\ArmA 2 OA\ArmA2OA.rpt"
$FileExists = Test-Path $ChkFile
$currentDate = get-date -uformat "%Y-%m-%d@%H-%M-%S"


if(-Not($ArmA2OA)){
    if($FileExists){
       move-item "C:\Users\Mark27\AppData\Local\ArmA 2 OA\ArmA2OA.rpt" ("C:\Users\Mark27\Desktop\A2OA\{0:yyyyMMdd}.rpt" -f (get-date))
    }
    else{break}
}
else{break}

想定される処理:プロセスA2OA.exeが実行されていない場合ArmA2OA.rptは、ディレクトリにファイルが存在するかどうかを確認しますC:\Users\Mark27\AppData\Local\ArmA 2 OA\。それが当てはまる場合、現在のタイムスタンプを使用してファイルをコピーして名前を変更し、C:\Users\Mark27\Desktop\A2OA

ファイルが存在しない場合、またはプロセスが実行されている場合は、中止します。

私はこれに似た多くの質問を経験しましたが、私の解決策を見つけていません。探しているディレクトリとファイル名は常に同じです。(このスクリプトは、10〜15分ごとに実行されるように設定されます。)


1
それで、あなたが得ているエラーは何ですか?
DavidPostill

David:エラー参照-ErrorActionを投げていました。ジュリアンは私が求めていた答えを提供してくれました。余分なスペースがありました。編集:質問は「ゲストアカウント」として投稿されました。質問の所有権を実際のアカウントとする方法が完全にはわかりません。
マイケルレッドボーン

あなたは、あなたのアカウントを統合するためにスタックExchangeから誰かに聞いて一番下にご連絡のリンクを使用する必要があります...
ジャーニーマンオタク

回答:


1

最初のコマンドに余分なスペースがあります。それがあるはずです-ErrorAction、あなたが持っている- ErrorAction

また、elseステートメントは必要ありません。

$currentDate 必要ありません。

PowerShell ISEを使用して、これらのスクリプトの作成を支援することをお勧めします。これにより、スクリプトのステップ実行、部分的なスクリプトの実行、ヘルプ情報の取得が容易になるためです。


1

次のスクリプトは少し合理化されています。$ checkFileの存在を明示的にチェックするのではなく、Get-Itemを試行します。成功すると、Move-Itemにパイプされます。別の括弧のペアを必要と
する!not演算子を使用する場合。

$ChkFile =  "C:\Users\Mark27\AppData\Local\ArmA 2 OA\ArmA2OA.rpt"
$Template = "C:\Users\Mark27\Desktop\A2OA\{0:yyyyMMdd}.rpt"

If (!(Get-Process ArmA2OA -ErrorAction SilentlyContinue)){
  Get-Item $chkFile -ErrorAction SilentlyContinue|
    Move-Item -Destination {$Template -f (Get-Date)} -WhatIf
}

# short version using aliases but equal functionality
# If (!(PS ArmA2OA -EA 0)){GI $chkFile -EA 0|Move -Dest {$Template -f (Get-Date)} -WhatIf}

出力がOKの場合は、 -WhatIf

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.