我正在尝试创建一个bat文件来从这多个文件中删除-en-us:
即。每月销售和取消-en-us.pdf将重命名为每月销售和取消.pdf。
以下此脚本适用于本地计算机。但是,如果我定义了一个共享驱动器的filesharelocation,并运行它,那么我收到了这个错误:
找不到档案 系统找不到指定的文件。
以下是我正在使用的脚本:
@echo off
setlocal enabledelayedexpansion
set deletestring=-en-us
set filesharelocation=\\companyname\DEV\Testing
for /f "delims==" %%F in ('dir %filesharelocation% /b /l *-en-us.pdf ^| find "%deletestring%"') do (
set oldfilename=%%F
set newfilename=!oldfilename:%deletestring%=!
Ren "!oldfilename!" "!newfilename!"
)
有人可以帮忙吗?感谢。
答案 0 :(得分:1)
在编码时,%%F
返回dir
命令输出中的内容,即只返回没有路径的文件名。
如果从包含文件的同一目录执行,则没有问题,但是当您再次运行其他驱动器/文件夹的内容时,%%F
不包含文件的路径,并且文件与批处理文件不在同一文件夹中,即行
Ren "!oldfilename!" "!newfilename!"
(使用从%% F获取的oldfilename)不包含任何路径,只包含文件名。
最简单的解决方案是添加路径。
Ren "%filesharelocation%\!oldfilename!" "!newfilename!"
或者,您可以将当前驱动器更改为包含文件的文件夹
pushd "%filesharelocation%"
for /f "delims==" %%F in .....
.....
)
popd