質問編集履歴

2

件名修正

2022/05/11 01:42

投稿

Aki69
Aki69

スコア1

test CHANGED
@@ -1 +1 @@
1
- 【PowerShell】「フォルダ内ファイルの圧縮→フォルダ移動→最古ファイルの削除」を日次で実行するスクリプト
1
+ 【PowerShell】「フォルダ内ファイルの圧縮→フォルダ移動→最古ファイルの削除」を日次で実行するスクリプトの不備解消方法について
test CHANGED
@@ -1,5 +1,5 @@
1
1
  タスクスケジューラから日次で実行し、以下一連の処理を自動で実行するPowerShellスクリプトを作成しました。
2
- 元となるファイルが1種類の場合は問題なく動作したように見えますが、2種類以上の場合に上手く動作しません。修正案をご教示いただけると助かります。
2
+ 元となるファイルが1種類の場合は問題なく動作したように見えますが、2種類以上の場合に上手く動作しません。スクリプトを記載致しましたので、修正案をご教示いただけると助かります。
3
3
 
4
4
  **<処理概要>**
5
5
  ①フォルダA内のcsvファイルをzipで圧縮する

1

スクリプトの追記

2022/05/10 10:37

投稿

Aki69
Aki69

スコア1

test CHANGED
@@ -1 +1 @@
1
- 【PSまたはバッチ】「フォルダ内ファイルの圧縮→フォルダ移動→最古ファイルの削除」を日次で実行するスクリプト
1
+ 【PowerShell】「フォルダ内ファイルの圧縮→フォルダ移動→最古ファイルの削除」を日次で実行するスクリプト
test CHANGED
@@ -1,13 +1,33 @@
1
- タスクスケジューラから日次で実行し、以下一連の処理を自動で実行するPowerShellまたはバッチファイルを作成したいのですが、
1
+ タスクスケジューラから日次で実行し、以下一連の処理を自動で実行するPowerShellスクリプトを作成しまし
2
- なたかサンプルスクリプトをいただけないでしょうか。
2
+ 元とるファイルが1種類の場合は問題なく動作しように見えますが、2種類以上の場合に上手く動作しません。修正案ご教示いただけると助ります
3
3
 
4
+ **<処理概要>**
4
5
  ①フォルダA内のcsvファイルをzipで圧縮する
5
6
   C:\folderA\aaa.csv → C:\folderA\aaa.zip
6
7
  ②圧縮したファイルをフォルダBに移動
7
8
   C:\folderA\aaa.zip → D:\folderB\aaa.zip
8
9
  ③フォルダA内の元ファイル(未圧縮のcsv)を削除する
9
10
   C:\folderA\aaa.csv
10
- ④移動先(フォルダB)に圧縮ファイルが31個以上あればタイムスタンプが一番古いファイルを削除
11
+ ④移動先(フォルダB)に圧縮ファイルが11個以上あればタイムスタンプが一番古いファイルを削除
11
-  (常に最新30世代のみファイルが保管されている状態とする)
12
+  (常に最新10世代のみファイルが保管されている状態とする)
12
13
 
14
+ **<作成スクリプト>**
15
+ ```ここに言語を入力
16
+ //フォルダA内のファイル名(拡張子なし)を取得
17
+ $src = Get-ChildItem -Name C:\folderA
18
+ $file = [System.IO.Path]::GetFileNameWithoutExtension("$src")
19
+ //①、②の処理
20
+ Compress-Archive -Path C:\folderA\*.* -DestinationPath C:\folderB\$file
21
+ //③の処理
22
+ Remove-Item C:\folderA\*.*
23
+ //④の処理
24
+ $a = (Get-ChildItem C:\folderB | ? { ! $_.PsIsContainer }).Count
25
+ if($a -gt 10){
26
+ Get-ChildItem C:\folderB |
27
+ Sort-Object LastWriteTime -Descending |
28
+ Select-Object -Skip 10 |
29
+ foreach{Remove-Item $_.FullName}
30
+ }
31
+ ```
32
+
13
- 以上、ご回答ただけますと幸いです
33
+ よろしくお願致します。