
こんにちは。超初心者なのですが教えてください。
ある複数フォルダに格納されている.txtファイルを、現在の
フォルダ名を取得して、別フォルダにリネームして
格納するバッチファイルを作成したいと考えています。
for文を繰り返し使わなければいけないことはわかっているのですが、それをどう表現していいのか全然わかりません。
例えば、
データ取得元として以下のファイルがあったら
C:\temp\20100101\data1.txt
C:\temp\20100101\data2.txt
C:\temp\20100101\data3.txt
C:\temp\20100102\data1.txt
C:\temp\20100102\data2.txt
C:\temp\20100103\data1.txt
C:\temp\20100103\data2.txt
これを別フォルダに、現在のフォルダ名をファイル名にくっつけて
以下のように一つのフォルダに纏めて格納したいと思っています。
ファイルの中身はそのままコピーしたいので、どこかでcopyコマンド
を使うかもしれないです。
C:\test\data1_20100101.txt
C:\test\data2_20100101.txt
C:\test\data3_20100101.txt
C:\test\data1_20100102.txt
C:\test\data2_20100102.txt
C:\test\data1_20100103.txt
C:\test\data2_20100103.txt
実装方法として以下までは考えましたが、これ以上は無理そうです。
rem set A=C:\temp
rem set B=C:\test
for %%A in (C:\temp\) do ( if not "%%A"=="" ( pushd "%%A"
for /d %%B in (*) do ( if not "%%B"=="" ( pushd "%%B"
for /d %%C in (*) do ( if not "%%C"=="" ( pushd "%%C" ) )
) ) popd?
) )
申し訳ありませんが、お助け願います。
No.1ベストアンサー
- 回答日時:
rem 対象ファイルの一覧作成
dir /s /b C:\temp > file.tmp
rem それに対して繰り返し
for /f "delims=" %%F in (file.tmp) do (
rem パス名の分解(ディレクトリ名の取り出し)
for /f "delims=\ tokens=3" %%D in ("%%F") do (
rem コピー(ファイル名%%Fの途中に%%Dを入れる)
copy %%F C:\test\%%~nF_%%D%%~xF
))
del file.tmp
ご回答の結果をbatファイルにコピーして実行したら、ちゃんと出来ていました。すごいです!
ありがとうございましたー。
もう1点お聞きしたいのですが、
こちらのローカルPCの実際のフォルダ構成は日付の下に
曜日が入っていて、下記のようになっています。
C:\temp\20100101\Mon\data1.txt
C:\temp\20100101\Mon\data2.txt
C:\temp\20100101\Mon\data3.txt
これを
C:\test\data1_20100101_Mon.txt
C:\test\data2_20100101_Mon.txt
C:\test\data3_20100101_Mon.txt
のようにするには、
for文をもう一個加えればよいのでしょうか。
何もわかってなく申し訳ありませんが、よろしくお願いいたします。
No.2
- 回答日時:
>C:\temp\20100101\Mon\data1.txt
"delims=\ tokens=3" で、\ で分解した3つめを取っていますので、4つめも取るようにします。
tokens=3,4 にすると %%D = 20100101, %%E = Mon になります。
dir /s /b C:\temp > file.tmp
for /f "delims=" %%F in (file.tmp) do (
for /f "delims=\ tokens=3,4" %%D in ("%%F") do (
copy %%F C:\test\%%~nF_%%D_%%E%%~xF
))
del file.tmp
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/03 13:18
- Java 動かなくなったのでJavaソースを手直しお願いします。 2 2022/04/30 05:35
- その他(プログラミング・Web制作) Fortranでの出力ファイル 2 2023/03/21 21:25
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- その他(プログラミング・Web制作) ファイル名の一部をbatで変更したい batファイルを使って、以下のようにファイル名の一部を変更した 3 2023/02/21 20:09
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/02/05 09:55
- Excel(エクセル) ExcelVBA メモ帳を起動し名前を付けて指定フォルダに保存 2 2022/04/18 13:15
このQ&Aを見た人はこんなQ&Aも見ています
-
一括でフォルダと同じ名前にファイルをリネームしたい
フリーソフト
-
バッチファイル フォルダ名をファイル名に置き換える
その他(プログラミング・Web制作)
-
バッチでテキストファイルから任意の行のみ取得したい
その他(プログラミング・Web制作)
-
-
4
ファイル名の頭5桁と同名のフォルダを自動作成し、移動させる方法はありますか?
Access(アクセス)
-
5
コマンドプロンプトによるフォルダ内のファイル存在有無
UNIX・Linux
-
6
batである文字列内に特定の文字列が含まれているか確認したい
その他(プログラミング・Web制作)
-
7
バッチファイルで指定フォルダ以下のフォルダ名を表示
その他(プログラミング・Web制作)
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
echoの出力の最後のスペースを...
-
リダイレクト >> を複数のファ...
-
Diskpart のリダイレクトの質問...
-
echo "abc" >> test.txt で、先...
-
xcopyで特定のファイルのみをコ...
-
【VBA】テキストファイルから特...
-
FTPの動作の違いについて
-
ワードのテキストボックスの中...
-
コマンドプロンプトで相対パス...
-
FTPのバッチファイルで日付を引...
-
NULLの置き換えについて
-
.txtって、縦書きにはならない...
-
ファイル名ソートにハイフン
-
nkfで全角ハイフンが半角になる...
-
linuxのコマンドでディレクトリ...
-
Linux(raspberry pi)でのcpコマ...
-
大量のフォルダからひとつのフ...
-
コマンドプロンプトの「%1」と...
-
コマンドプロンプトのエラーに...
-
これってパソコンの最適化が完...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
echoの出力の最後のスペースを...
-
xcopyで特定のファイルのみをコ...
-
【VBA】テキストファイルから特...
-
リダイレクト >> を複数のファ...
-
コマンドプロンプトで相対パス...
-
echo "abc" >> test.txt で、先...
-
コマンドにてテキストファイル...
-
FTPのバッチファイルで日付を引...
-
バッチファイルで改行の出力
-
NULLの置き換えについて
-
バッチファイル 現在のフォルダ...
-
バッチファイル 指定行の切り出し
-
bat処理の実行結果ログ出力方法...
-
コマンド実行結果を環境変数に...
-
bashで、gotoのようなラベルに...
-
複数テキストファイル連結につ...
-
コマンドプロンプトで標準エラ...
-
【DOSコマンド】for の デリミ...
-
バッチファイルのfor文の使い方...
-
.txtって、縦書きにはならない...
おすすめ情報