
はじめまして
4月から部署移動となり社内で利用しているPCを管理するようになりました。
この度セキュリティの観点からネットワーク内に500台程あるPCから業務で使用しているソフトのLogファイルを日付毎に保存し管理する必要性がでてきました。
各PCに保存されているLogファイルが同じファイル名(yyyymmdd.logとなっている)の為、保存の際に自動でリネーム(連番)して保存させる事はできないか?(001_yyyymmdd.log等)と考えております。
各PCからは「for」を使いリストに記載されているPCに対してコピーを実行を考えています。
保存先に同名のファイルがある為コピー時に番号を順番につけて保存したい。
yyyymmdd.log
001_yyyymmdd.log
002_yyyymmdd.log
003_yyyymmdd.log・・・
現在は
for /f "delims=" %%A in (%userprofile%\Desktop\PCLIST.txt) do call
:sub %%A
:sub
for /f %%A in ('dir \\%1\C$\Users /s /b ^| find "yyyymmdd.log"') do copy %%A %userprofile%\Desktop\保存先
このあとにリネームのループコマンドを組み込めたら希望の事ができないか?と試行錯誤しております。
ITもコマンドも初心者ではありますがどうか皆様のお知恵をお貸し下さいよろしくお願いします。
No.3ベストアンサー
- 回答日時:
アイディアとしてですが、以下のような仕組みではどうでしょうか。
「notepad.exe」を3個コピーするサンプルです。
――――――――――――――――――――――
@echo off
rem ------------------------
rem ■ 設定
set "保存先=%userprofile%\Desktop\保存先"
rem ------------------------
rem ■ 保存先フォルダの作成
if not exist "%保存先%" md "%保存先%"
rem ■ 遅延環境変数を有効にする
SETLOCAL enabledelayedexpansion
rem ■ ループ処理
for %%A in (C:\Windows\notepad.exe C:\Windows\notepad.exe C:\Windows\notepad.exe) do (
rem ■ 「コピー先ファイル」をセット
call :「コピー先ファイル」をセット "%%A" "%保存先%"
rem ■ コピー
copy "%%A" "!コピー先ファイル!"
)
rem ■ 遅延環境変数を無効にする
ENDLOCAL
rem ------------------------
rem ■ 変数「コピー先ファイル」をセットする処理
rem ■ 通常はジャンプ
goto :END_「コピー先ファイル」をセット
:「コピー先ファイル」をセット
rem ■ 「連番無しのファイル名」が存在しなかった場合はそれをセットして終了
if not exist "%~2\%~nx1" set "コピー先ファイル=%~2\%~nx1"
if not exist "%~2\%~nx1" exit /b
rem ■ 「連番」の初期設定
if "%連番%"=="" set "連番=1000"
:連番付け
rem ■ 連番を増やす
set /a "連番=%連番%+1"
rem ■ 連番が上限に達した場合は終了する
if "%連番%"=="2000" (
echo.連番が上限に達しました
pause
exit
)
rem ■ 「連番ありのパス」をセット
set "コピー先ファイル=%~2\%連番:~-3,3%_%~nx1"
rem ■ 上記でセットしたファイルが既に存在すれば、戻って連番を付け直す
if exist "%コピー先ファイル%" goto 連番付け
rem ■ 連番を付けれたらこの処理を終了
exit /b
:END_「コピー先ファイル」をセット
rem ------------------------
rem ■ 終了
echo.完了しました
pause
rem ------------------------
――――――――――――――――――――――
動作確認はしていますが、ざっと確認しただけなので、うまく動かなかったり、スマートではない記述があったらすみません。まずい所があったら直してください。
要点を解説しますと、『call :「コピー先ファイル」をセット』の後に、引数として「コピー元ファイル名(又はフルパス)」、「コピー先フォルダ」の順に記述しますと、重複するファイル名が無いかをチェックし、存在しないパスを「コピー先ファイル」にセットする仕様になっています。
ただ、引数1の「コピー元ファイル名」に、ネットワーク上のファイルパスを指定した場合は、正しく動作しないかも知れません。ファイル名だけを記述した方が無難かも知れません。
又、通常、変数は「%」で囲みますが、今回の場合は仕様上「!」で囲みます。つまり「!コピー先ファイル!」と記述します。
「%~2」は、「2番目の引数」を表します。
「%~nx1」は、「1番目の引数の、名前(n)と、拡張子(x)」を表します。
「%連番:~-3,3%」は、「変数『連番』の、最後から3文字目から、3文字」を表します。
「遅延環境変数」については、うまく説明出来ないです。すみません。「目的」で言うと、本来、変数を使えない場所で変数を使えるようするものです。WEB検索すると詳しい解説ページが見付かるかと思います。
No.1
- 回答日時:
番号でいいのでしょうか?
どういう手順で各PCを巡回するのか知りませんが
PCの電源が入っている入っていないで
001がこっちのPCになったり、あっちのPCになったりしないのでしょうか?
PC名(ホスト名)_yyyymmdd.logのような形式でないと
ログを収集しても
これどのPC?とはなりませんか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセル2019でPDFファイル名に枝番号をつけたい。 アクティブワークシートを印刷した後の処理とし 4 2023/06/06 21:00
- Excel(エクセル) 【マクロ】ファイル名の日付によって、保管するフォルダを、自動選択したい 4 2023/08/16 11:24
- Excel(エクセル) 1つのファイルを3つのフォルダにファイル名を【明日の日付】にして、コピーをしたい 2 2022/12/21 17:43
- Excel(エクセル) エクセルVBA、ファイル名をセルの値で保存の方法を教えてください。 おそれいります。こちらで数々のエ 6 2023/06/30 22:17
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- Visual Basic(VBA) outlook マクロが終了しません。 1 2022/09/02 11:14
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- その他(パソコン・周辺機器) 同じファイル名 上書きしないフリーソフトなどあったら教えて下さい。 仕事で大量の写真などを扱っており 3 2023/05/18 06:43
- その他(クラウドサービス・オンラインストレージ) ファイルの保存をOnedriveのクラウド上にする方法を教えて欲しいです。 windows11にてデ 2 2023/02/16 13:37
- その他(コンピューター・テクノロジー) batファイルでPCの設定内容やプロパティーを取得したいのですが、コマンド1個で1ファイルとなるのを 2 2022/04/27 15:27
このQ&Aを見た人はこんなQ&Aも見ています
-
[DOS] コピー先に同じファイル名がある場合、名前を変えて...
その他(プログラミング・Web制作)
-
バッチでテキストファイルから任意の行のみ取得したい
その他(プログラミング・Web制作)
-
ディレクトリ名変更してコピーするバッチ
その他(プログラミング・Web制作)
-
-
4
コマンドプロンプトの「%1」と「%~1」の違いがわからない
その他(プログラミング・Web制作)
-
5
batである文字列内に特定の文字列が含まれているか確認したい
その他(プログラミング・Web制作)
-
6
バッチファイル 別ファイルにリストしてあるファイルをコピーしたい
その他(プログラミング・Web制作)
-
7
バッチファイル XCOPYで上書きしない
その他(プログラミング・Web制作)
-
8
ファイルの先頭行を全て削除したい
Windows Vista・XP
-
9
バッチファイルでサーバーのファイルをクライアントへコピーしたい
その他(コンピューター・テクノロジー)
-
10
バッチ処理でファイルの中身を変数に入れるやり方
その他(プログラミング・Web制作)
-
11
ファイルを名前を変えて複数個コピーを作成、を一括で
Windows 7
-
12
コマンドプロンプトのエラーについて
その他(パソコン・周辺機器)
-
13
バッチファイルで昨日の日付を取得
その他(プログラミング・Web制作)
-
14
同じファイルを連番などでひたすらたくさんコピーするソフト
フリーソフト
-
15
コマンドプロンプトによるフォルダ内のファイル存在有無
UNIX・Linux
-
16
ファイル名の一部をbatで変更したい batファイルを使って、以下のようにファイル名の一部を変更した
その他(プログラミング・Web制作)
-
17
バッチファイルを使ってテキストファイルの任意の行を削除したい
その他(プログラミング・Web制作)
-
18
【バッチファイル】ホスト名をファイル名につけたい【変更】
その他(コンピューター・テクノロジー)
-
19
コマンドプロンプトでリネーム
その他(コンピューター・テクノロジー)
-
20
エクセルのファイルを名前を変えながら大量にコピーしたい
Excel(エクセル)
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで複数のコメントのサ...
-
ファイルサーバ上のファイルが...
-
エクセルのハイパーリンクがコ...
-
[エクセル]コピーするとオブジ...
-
Vba初心者です。下記のコード助...
-
バッチファイル 別ファイルにリ...
-
frxファイルの役目
-
同じファイル名 上書きしないフ...
-
サブフォルダ(データ)にある...
-
バッチファイルのコピーで
-
xcopyでのバッチコピー方法でコ...
-
エクセル 同じデータなのに違う...
-
エクセルVBAで開いているファイ...
-
bat 同名ファイルコピー時にリ...
-
VB6でのファイルコピーの終了検...
-
ハイフネーションされている英...
-
FTPとファイルコピーの違いにつ...
-
アクセス クエリを別のファイ...
-
エクセル2010、図が大きすぎま...
-
現在のブックを閉じないで、マ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで複数のコメントのサ...
-
バッチファイル XCOPYで上書き...
-
frxファイルの役目
-
エクセルのハイパーリンクがコ...
-
Vba初心者です。下記のコード助...
-
ファイルサーバ上のファイルが...
-
同じファイル名 上書きしないフ...
-
[エクセル]コピーするとオブジ...
-
xcopyでのバッチコピー方法でコ...
-
bat 同名ファイルコピー時にリ...
-
バッチファイル 別ファイルにリ...
-
バッチファイルのコピーで
-
アクセス クエリを別のファイ...
-
DOSコマンドのコピー完了判定
-
FTPとファイルコピーの違いにつ...
-
vbsでファイルやフォルダのコピ...
-
エクセル2010、図が大きすぎま...
-
現在のブックを閉じないで、マ...
-
vbsでExcelのシートをコピーす...
-
共有フォルダへのフォルダ作成...
おすすめ情報
Logの中に端末情報は記録されている為、ファイルを一箇所に集めて連番がふれれば問題ないです。
各PCへはPCLIST.txtに記載されたコンピューター名の順番で巡回を考えています。
PCLIST.txtに
A_PC
B_PC
C_PC
~500台程
を記載し実行
Batを実行したPCの「保存先フォルダ」に
A_PCのLogファイルyyyymmdd.logが最初に保存
次に
B_PCのLogファイルがコピーされるとA_PCのLogファイルが存在(yyyymmdd.log)する為、001_yyyymmdd.logとして保存
次に
C_PCのLogファイルがコピーされるとA_PCとB_PCのLogファイルが存在(yyyymmdd.log、001_yyyymmdd.log)する為、002_yyyymmdd.logとして保存・・・・これを500台程
このように保存ができたらと考えています。
PCLIST.txtに記載されている順番にLogを取るので連番が望ましい程度です。
どこのPCのファイルかリネームでわからなくなってもLogの中にPC情報があるので問題ありません。
自分の中で連番とした方が理解して貰えると思った次第です。
同名のファイルを順番に500程コピーしてくるので自動でリネーム保存を行いたいです。