我知道有很多这样的例子,但我只是无法理解,这并不难,但我发现确实如此。
我有一个包含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!
)
答案 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
循环遍历
data1
,data2
,data3
和data4
。
嵌套的for
循环使用%%A
迭代文件名
的值为data1
,并且为日期戳变型使用通配符。
%~B
是当前文件名,已重命名为%%~A.txt
,
其中%%~A
保留data1
的当前值。
~
中的%%~A
是一个修饰符,它将删除周围的双引号。
popd
将恢复以前的当前工作目录
pushd
发生了变化。它应该删除临时映射的驱动器。
要获取有关命令的帮助,请使用pushd /?
,它将打印
出帮助信息。
for /?
打印有关for
,ren /?
...等的帮助信息。
答案 2 :(得分:0)
两行脚本示例:
{!! Html::script('js/jquery-validation/localization/messages_' . config('app.locale')) !!}
有关所用命令的信息,请打开命令提示符并输入以下各项:
PushD /?
退出/?
对于/?
仁/?