2015-10-13 153 views
0

我想创建一个.BAT脚本,它将从CSV(第1列)中读取文件位置列表,然后在目录中找到该文件并将其复制到新文件夹中为其指定CSV文件第2列中指定的名称。无法通过Windows命令行重命名复制的文件

的CSV样子:

U:\source\OHSVols180\A100\B100\C107\F109.DOC,file1 
U:\source\OHSVols180\A100\B100\C110\F152.PDF,file2 

下.bat文件现任职于它访问CSV场1和将文件复制到新文件夹。我的问题是我如何管理也可以按CSV中的第2列重命名复制的文件?它可以保持与前面列1中相同的文件扩展名。目前他的文件被命名为最初的F109.DOC和F152.PDF,但我希望它们被称为file1.DOC和file2.PDF。

for /f "tokens=1 delims=," %%L in (U:\ExportList.csv) do copy "%%L" U:\Exported\ 

任何帮助非常感谢。不知道如何引用CSV的第二部分以及要重命名文件的代码。

回答

0
for /f "tokens=1,2 delims=," %%L in (U:\ExportList.csv) do copy "%%L" "U:\Exported\%%M%%~xL" 

哪里%%M是要求第二代币(第二场将使用作为替换参数L后的下一个字母),并%%~xL是文件的扩展名由%%L

+0

作品像做梦一样被引用谢谢你现在有一个漂亮的小文件复制程序!我理解了令牌部分1,2,并且您只是使用字母表中的下一个字母作为下一列。只是出于兴趣,你可以解释%% M %%〜xL部分是什么意思? – 83dons

+0

@ 83dons,它包含在答案中。你可以从命令行执行'for /?'来获得可用修饰符的完整列表。 –

+0

啊,是的道歉谢谢你的解决方案,我花了一天,一半试图解决这个问题! – 83dons