【发布时间】:2020-08-11 09:09:41
【问题描述】:
所以我正在编写一个批处理脚本来将子文件夹中的 CSV 文件重命名为与其父文件夹相同的名称。例如,文件R:\Royal Mail\Results\202008101416151232.rm\results.csv 将变为R:\Royal Mail\Results\202008101416151232.rm\202008101416151232.rm.csv。每个文件夹中只有一个 CSV。
完成后,文件将向上移动一个目录,以便另一个软件可以处理它。我已经完成了这项工作,但问题是它当前重命名了主文件夹和子目录中的文件。例如,它会将R:\Royal Mail\Results\202008101416151232.rm.csv 重命名为R:\Royal Mail\Results\Results.csv。
这是我目前的代码:
@echo off
set folder="\\rackstation\Couriers\Royal Mail\Results"
rem Rename CSV files to parent folder name
for /r %folder% %%D in (.) do (
for /f "delims=" %%F in ('dir /b /A:-D "%%D"') do ren "%%D\%%F" "%%~nxD%%~xF"
echo %%D
)
rem Move CSV files to previous folder
FOR /R %folder% %%i IN (*.csv) DO MOVE "%%i" %folder%
rem Deletes empty folders
for /f "delims=" %%i in ('dir %folder% /s /b /ad ^| sort /r') do rd "%%i"
我已经尝试了几件事,但没有设法添加一个 if 条件来说明如果 %%D = "\\rackstation\Couriers\Royal Mail\Results" 则不要重命名文件。
任何人都可以修改这个脚本来做到这一点吗?
【问题讨论】:
标签: batch-file cmd