使用批处理文件重命名文件

时间:2018-12-26 21:59:54

标签: batch-file rename

我知道有很多这样的例子,但我只是无法理解,这并不难,但我发现确实如此。

我有一个包含4个文件的文件夹:

rtcc_current_pnp_data1-2018-12-26-061000.txt
rtcc_current_pnp_data2-2018-12-26-061000.txt
rtcc_current_pnp_data3-2018-12-26-061000.txt
rtcc_current_pnp_data4-2018-12-26-061000.txt

最后的日期/时间每天更改。

每天我要运行一个批处理文件以将其重命名为:

data1.txt 
data2.txt
data3.txt 
data4.txt

就是这样...有人可以帮我从文件中提取正确的名称并将其重命名吗?

所以我尝试了一下,但它什么也没做:

for %%A in (\\apdwhdb01\D$\ProbationImportFolder\Current\rtcc*.*) do (
  set "filename=%%A"
  set "newName=EXP_!filename:~18!"

  rem ** remove the ECHO when it seems to work
  ren !filename! !newName!
)

3 个答案:

答案 0 :(得分:1)

最简单的方法是这样:

 ren "\\apdwhdb01\D$\ProbationImportFolder\Current\*data1*.txt" data1.txt
 ren "\\apdwhdb01\D$\ProbationImportFolder\Current\*data2*.txt" data2.txt
 ren "\\apdwhdb01\D$\ProbationImportFolder\Current\*data3*.txt" data3.txt
 ren "\\apdwhdb01\D$\ProbationImportFolder\Current\*data4*.txt" data4.txt

但是,您可能面临的问题是网络连接未激活/对您的连接无效。最简单的找出方法是:

 dir "\\apdwhdb01\D$\ProbationImportFolder\Current"

如果它返回您的文件列表,那么您就可以了。如果不是,那么您首先要在同一批处理文件中映射驱动器:

 :: temporarily map the network share to the Q: drive.
 :: make sure you update the username and password
 net use q: "\\apdwhdb01\D$\ProbationImportFolder\Current" /user:MyUserName myPassword

 :: rename the files
 ren "q:\*data1*.txt" data1.txt
 ren "q:\*data2*.txt" data2.txt
 ren "q:\*data3*.txt" data3.txt
 ren "q:\*data4*.txt" data4.txt

 :: remove the mapped drive
 net use q: /delete

答案 1 :(得分:0)

@echo off

pushd "\\apdwhdb01\D$\ProbationImportFolder\Current" || exit /b 1

for %%A in (data1 data2 data3 data4) do (
    for %%B in ("rtcc_current_pnp_%%~A-20*.txt") do (
        ren "%%~B" "%%~A.txt"
    )
)

popd

pushd会将网络共享映射到一个临时映射的驱动器。 ||是如果左侧的命令失败, 进行右边的命令, exit /b 1结束了脚本。

for循环遍历 data1data2data3data4

嵌套的for循环使用%%A迭代文件名 的值为data1,并且为日期戳变型使用通配符。 %~B是当前文件名,已重命名为%%~A.txt, 其中%%~A保留data1的当前值。 ~中的%%~A是一个修饰符,它将删除周围的双引号。

popd将恢复以前的当前工作目录 pushd发生了变化。它应该删除临时映射的驱动器。

要获取有关命令的帮助,请使用pushd /?,它将打印 出帮助信息。 for /?打印有关forren /? ...等的帮助信息。

答案 2 :(得分:0)

两行脚本示例:

{!! Html::script('js/jquery-validation/localization/messages_' . config('app.locale')) !!}

有关所用命令的信息,请打开命令提示符并输入以下各项:

  

PushD /?
  退出/?
  对于/?
  仁/?