Perlのプログラムを作りたくて質問させていただきます。
1.『AAA』というフォルダ下に「01~04」までのフォルダを作る
2.「AAA」のフォルダ下に「BB」というフォルダがあり、その下に[***_01.bz2][***_02.bz2][***_03.bz2][***_04.bz2]というファイルがあります。
『AAA/BBB/***01.bz2』~『AAA/BBB/***04.bz2』
これら4つのファイルをコマンド「bunzip2」を使用して解凍する。
3.解凍したファイル[***_01]を「01」のフォルダに移動
[***_02]を「02」のフォルダに移動
[***_03]を「03」のフォルダに移動
[***_04]を「04」のフォルダに移動
こういった内容をプログラムを作りたいのですが、勉強不足で色々うまくいきません。
どのように作ればいいか教えていただけるとありがたいです。
ちなみにOSは「Windows10」です。
どなたかどうぞよろしくお願いします。
No.3ベストアンサー
- 回答日時:
以下のスクリプトを実行し下さい。
$dir = "d:\\goo\\perl\\AAA"; #AAA
mkdir($dir . "\\01");
mkdir($dir . "\\02");
mkdir($dir . "\\03");
mkdir($dir . "\\04");
$dirBB = $dir . "\\BB"; #BB
$ret = opendir(DH,$dirBB);
if ($ret == 0){
die "opendir <<$dirBB>> error: $!";
}
@list = readdir(DH);
closedir(DH);
foreach $fname (@list){
if ($fname =~ /^(.+_)(0[1234])\.bz2$/){
$trgfile = $1 . $2;
$trgdir = $2;
$cmd = "bunzip2 " . $dirBB . "\\" . $fname;
system($cmd);
$oldf = $dirBB . "\\" . $trgfile;
$newf = $dir ."\\" . $trgdir . "\\" . $trgfile;
$ret = rename($oldf,$newf);
if ($ret == 0){
die "rename <<$oldf -> $newf>> error: $!";
}
}
}
使用時の注意事項
$dir = "d:\\goo\\perl\\AAA"; #AAA
は、『AAA』というフォルダです。
あなたの環境にあわせて適切に設定してください。
(絶対パスで指定します)
$dirBB = $dir . "\\BB"; #BB
は「BB」というフォルダです。
あなたの環境にあわせて適切に設定してください。
(相対パスで指定します)
No.1
- 回答日時:
1. mkdir
2. opendir/readdir/closedir, system
3. rename もしくは bunzip2 -c オプションでリダイレクション指定
参考)
https://perldoc.jp/func/mkdir
https://perldoc.jp/func/readdir
https://perldoc.jp/func/system
https://perldoc.jp/func/rename
https://linuxjm.osdn.jp/html/bzip2/man1/bzip2.1. …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- デスクトップパソコン フォルダ内のファイル移動が出来ません 3 2022/10/16 05:42
- Excel(エクセル) ファイル一覧表を使ったファイルの移動 5 2022/08/10 15:37
- Excel(エクセル) 2つのマクロを連続して動かしたい 3 2022/09/20 23:46
- Excel(エクセル) 【VBA】フォルダAにある2つのファイルの内1つを、フォルダBへ。もう1つを、フォルダBへ移動したい 6 2022/07/26 08:51
- Excel(エクセル) 【VBAファイル移動】2つのマクロを順に実行。1つ目のマクロが実行不可⇒2つ目が実行不可となる件 2 2022/07/29 12:17
- Visual Basic(VBA) 【マクロ】フォルダにファイルが1つも無い時に、ファイルがありませんとメッセージを表示する 4 2022/08/28 08:48
- Excel(エクセル) フォルダAから1つのファイルだけを、フォルダBへを移動するVBAについて 2 2022/07/25 11:45
- Excel(エクセル) 【マクロ】ファイルを古い順に、1個ずつ移動する 1 2022/09/06 20:30
- Excel(エクセル) 【マクロ】エラーが発生⇒実行時エラー58既に同名のファイルが存在 5 2022/08/31 10:03
- システム パソコンの共有フォルダ移動について教えてください。 2 2022/04/07 10:14
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「黒歴史」教えて下さい
- ・2024年においていきたいもの
- ・我が家のお雑煮スタイル、教えて下さい
- ・店員も客も斜め上を行くデパートの福袋
- ・食べられるかと思ったけど…ダメでした
- ・【大喜利】【投稿~12/28】こんなおせち料理は嫌だ
- ・前回の年越しの瞬間、何してた?
- ・【お題】マッチョ習字
- ・モテ期を経験した方いらっしゃいますか?
- ・一番最初にネットにつないだのはいつ?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
VBAでファイル名を指定して保存...
-
条件に合うフォルダが存在する...
-
デスクトップの画像をhtmlに表...
-
【VBS】古い日付のフォルダを削...
-
Access VBA で フォルダ権限...
-
Excel VBA マクロ フォルダ名を...
-
クラウドにあるフォルダを共有...
-
ファイルとフォルダのどちらも...
-
VBA 最新のフォルダ取得
-
VBA フォルダ名に特定の文字を...
-
あるフォルダの中にあるファイ...
-
パス名に2バイト文字(マルチバ...
-
Debug フォルダは消していいの?
-
VB.NRT FolderBrowserDialogを...
-
インストール時に、空フォルダ...
-
期間を指定したフォルダの削除...
-
VBプロジェクトでのフォルダ構...
-
会社のネットワーク上のファイ...
-
Excelで指定したフォルダに保存...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
ファイル名と同名のフォルダを...
-
デスクトップの画像をhtmlに表...
-
Excelのハイパーリンクについて...
-
C ファイル出力で、フォルダが...
-
【マクロ】ファイル名の日付に...
-
会社のネットワーク上のファイ...
-
VBA フォルダ名に特定の文字を...
-
excelマクロ 冒頭3文字が一致す...
-
Access VBA で フォルダ権限...
-
VBA 最新のフォルダ取得
-
パス名に2バイト文字(マルチバ...
-
Excelで指定したフォルダに保存...
-
API関数(DLL)の呼び出しにお...
-
C#でフォルダをロックする方法
-
ExcelのVBAでフォルダ指定がで...
-
フォルダ内のPDFファイル名を変...
-
フォルダにリンクを貼りたい
-
フォルダを開いて、閉じるのプ...
-
ディレクトリ名変更してコピー...
おすすめ情報
Tacosan様 回答ありがとうございます。
別にバッチファイルでも構いません。
バッチファイルだとどのようになりますかね?何分今まで力業でやってきたためプログラムやバッチファイル初心者なのです。
教えていただけるとありがたいです。