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,然后使用 CSV 中第 2 列的内容重命名位置 B 上的文件。

这是我到目前为止所做的,复制工作但重命名似乎并没有真正发生:

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

提前致谢。

4

1 回答 1

0

这个答案曾经包含我从评论中得到的错误建议:

当第二列不是完整路径名,而只是文件名时,rename "C:/myFolder/%%~nxi" "%%j"将其目标参数作为相对于当前目录的路径,而不是相对于目录的路径。

我认为应该通过在第二个参数中提供完整路径名来解决问题rename

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

但不是:完整路径名实际上在rename. cd首先ing 到目标目录并在一参数中不带文件夹名称的情况下重命名的解决方案结果证明是可行的。我认为在第一个参数中用反斜杠替换正斜杠留下第二个没有文件夹名称)也会有所帮助:在我在 Windows XP 上的测试中,rename当源文件夹路径包含正斜杠时,“找不到文件”失败,并且工作用于反斜杠。

于 2013-02-15T20:48:20.223 回答