🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

コピー

元のオブジェクトを破壊することなく、オブジェクトの複製を生成することをコピーと呼びます。

ファイルI/O

ファイルI/Oは、コンピューターにおけるファイルの入出力です。これは生成/削除やファイルを読み込んだり、出力をファイルに書き込むようなディレクトリやファイルの運用を含みます。

Q&A

解決済

1回答

3913閲覧

Powershellを用いたファイルの大量コピー&リネーム

MSHK

総合スコア4

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

コピー

元のオブジェクトを破壊することなく、オブジェクトの複製を生成することをコピーと呼びます。

ファイルI/O

ファイルI/Oは、コンピューターにおけるファイルの入出力です。これは生成/削除やファイルを読み込んだり、出力をファイルに書き込むようなディレクトリやファイルの運用を含みます。

0グッド

0クリップ

投稿2019/10/18 15:02

Powershellを用いたファイルの大量コピー&リネーム

こんにちは。
現在以下の様なPowershellのコードを作っております。

アルファベットと数字によって管理されている、jpegファイルがあります。

例:A191001.jpeg,A191002.jpeg,A191003.jpeg・・・・

このjpegファイルを別フォルダにコピー&リネームしたいです。
コピーするファイルですが、その時々で異なります。
上の例でいうと、奇数の番号だけコピー、1から5までコピー・・・

リネームに関しては、1対1で対応しております。
例:A191001.jpeg ==> No1A.jpeg

この処理をより楽に処理するためには、どの様にすれば良いでしょうか。

発生している問題・エラーメッセージ

下のコードで一応対応できております。
全部のファイル名と、リネーム名をコードに書き込んで、
コピーしないファイルをコメントアウトしております。

現在は、10ファイル程度ですが、今後100ファイルほどに増える予定です。
そうなると、コメントアウトで対応すると、入力に時間がかかります。

該当のソースコード

Powershell

1Copy-Item C:\data1\A191001.jpeg C:\data2\No1A.jpeg 2Copy-Item C:\data1\A191002.jpeg C:\data2\No2C.jpeg 3Copy-Item C:\data1\A191003.jpeg C:\data2\No3A.jpeg 4Copy-Item C:\data1\A191004.jpeg C:\data2\No4AB.jpeg

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

OS:windows7
Powershell:ver2.0

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2019/10/18 15:40

> コピーするファイルですが、その時々で異なります。 > 上の例でいうと、奇数の番号だけコピー、1から5までコピー・・・ その時々で変わるルールの生成も含めて、自動で楽に処理する方法は無いか?とのご質問でしょうか。 (未知のルールに対してプログラミングするのは無理な気がしますが)
MSHK

2019/10/21 03:39

回答ありがとうございます。 採用する番号は、手動で決定します。番号が決定した後です。 コードを全部書いて、コメントアウトで対応するという、力任せ?なやり方ではなく、 もう少し、効率のよいやりか方を探しておりました。
Zuishin

2019/10/21 10:49

回答しています。なぜ無視?
guest

回答1

0

ベストアンサー

コピー元とコピー先の対応についてはルールが示されていないため計算できません。
なので、まず CSV ファイルを作ります。

CSV

1src,dst 2"C:\data1\A191001.jpeg","C:\data2\No1A.jpeg" 3"C:\data1\A191002.jpeg","C:\data2\No2C.jpeg" 4"C:\data1\A191003.jpeg","C:\data2\No3A.jpeg" 5"C:\data1\A191004.jpeg","C:\data2\No4AB.jpeg"

仮にこれを data.csv とします。
これを $data に読み込みます。

PowerShell

1$data = Import-Csv data.csv

このうち 2 番目と 4 番目だけコピーします。

PowerShell

11, 3 | Foreach-Object { Copy-Item $data[$_].src $data[$_].dst }

投稿2019/10/18 23:04

編集2019/10/18 23:18
Zuishin

総合スコア28669

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MSHK

2019/10/21 11:00

回答遅くなって、すみません。実行したところ、上手く行きました。 ファイル名に関しては、対応表を作成しておりましたのでそれを利用しました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問