批处理脚本:重命名并将文件从一个文件夹移动到另一个文件夹

4

我有一个文件book.csv在文件夹C:\sam中。我想编写一个批处理脚本,将其重命名并移动到C:\samy。同时,book.csv的文件名是动态的。

编辑

我想要一个脚本,使我的文件从一个文件夹移动到另一个文件夹,并创建一个新文件(如果该文件已存在)。

例如,我有一个文件test.csv在下载文件夹中。当我运行下面的脚本时,如果在downloads1文件夹中存在同名文件,则会覆盖该文件。

但是,我希望它不覆盖现有文件,而是两个文件都存在;也许可以在文件名后面添加1、2等数字。

move C:\user\Downloads\*.csv C:\user\downloads1\

我知道使用 /-Y 选项会要求我覆盖文件。但我想自动执行此操作。
move /-Y C:\user\Downloads\*.csv C:\user\downloads1\

为什么要先重命名再移动?为什么不直接移动? - npocmaka
1个回答

7
@echo off
set /p new_name=set a new name   
 move /Y C:\sam\books.csv C:\samy\%new_name%.csv

或者
@echo off 
 move /Y C:\sam\books.csv C:\samy\%%~1.csv

第一个将要求用户输入新名称。第二个依赖于命令行参数,例如movescript.bat new_name

编辑 在下面的评论中第二个请求后,似乎仍应使用ren命令:

  @echo off
  set /p new_name=set a new name   
  move /Y C:\sam\books*.csv C:\samy\
  cd /D C:\samy\
  ren book_????_??_??.csv %new_name%_????_??_??.csv

或者
    @echo off 
    move /Y C:\sam\books*.csv C:\samy\
    cd /D C:\samy\
    ren book_????_??_??.csv %%~1_????_??_??.csv

1
实际上,文件名将是动态的,比如book_2013_10_16.csv之类的。因此,我想移动后重命名或先重命名再移动...正如您在此提出的命令中所示,名称将是静态的。如果我有动态文件名,我需要这个功能。我想将其重命名为静态名称book.csv。你能建议一下吗? - user2034816
谢谢你的帮助,伙计...我现在能够重命名和移动了...问题是books.csv将会动态地出现,比如book_2013_10_16.csv。每次它都会有不同的时间戳...C:\sam\books.csv行不通...你能帮忙吗,伙计... - user2034816
谢谢老兄..你救了我的一天..非常有帮助..正是我想要的。 - user2034816
@npocmaka - 你对以下这个问题有什么想法吗?链接 - Landon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接