0

次の形式の.csvファイルがあります。

<path_including_filename>,<new_filename>
<path_including_filename>,<new_filename>
<path_including_filename>,<new_filename>
<path_including_filename>,<new_filename>

CSVの列#1にあるものを場所Aから場所Bにコピーしてから、場所Bのファイルの名前をCSVの列#2の内容に変更したいと思います。

これは私がこれまでに行ったことです。コピーは機能しますが、名前の変更は実際には行われないようです。

For /F "tokens=1* delims=," %%i in (myCSV.csv) do (copy "%%i" "C:/myFolder" && rename "C:/myFolder/%%~nxi" "%%j")

前もって感謝します。

4

1 に答える 1

0

この回答には、コメントからの私の間違った提案が含まれていました。

2 番目の列が完全なパス名ではなく単なるファイル名である場合rename "C:/myFolder/%%~nxi" "%%j"、宛先引数は、ソースディレクトリではなく、現在のディレクトリに対する相対パスとして取得されます。

の2番目の引数にもフルパス名を指定することで、問題を解決する必要があると思いましたrename

rename "C:/myFolder/%%~nxi" "C:/myFolder/%%j"

しかし、いいえ:の宛先引数では、フルパス名は実際には無効renameです。最初にターゲットディレクトリに移動し、どちらのcd引数にもフォルダー名を付けずに名前を変更するという解決策が機能することが判明しました。最初の引数でスラッシュをバックスラッシュに置き換える( 2 番目の引数をフォルダー名なしのままにしておく) ことも役立つと思います: Windows XP での私のテストでは、ソース フォルダー パスにスラッシュが含まれていると「ファイルが見つかりません」で失敗し、機能しました。バックスラッシュ用。rename

于 2013-02-15T20:48:20.223 に答える