0

我正在尝试为朋友清理一些旧数据。数据放置在多个文件夹中,如下所示。

  1. C:\理货\数据\0000
  2. D:\理货\数据\1092
  3. C:\新建文件夹\Tally7.2\Data\0001

现在,我使用正则表达式 ^[0-9][0-9][0-9][0-9]$ 和一个名为 Everything 的搜索引擎来查找所有可能的具有四位数名称的文件夹,例如 0000我已经导出到一个文本文件,每行都包含一个目录路径,两边都用双引号括起来。

我需要编写一个批处理脚本来执行以下操作。

  1. 逐行读取文本文件。
  2. 检查目标目录中是否已存在具有该名称的文件夹。
  3. 如果是,则重命名文件夹并复制它。
  4. 如果没有,请复制而不重命名文件夹。
  5. 最后,我想按顺序重命名目标中以 0000 开头的所有文件夹。

我怎样才能做到这一点?

4

1 回答 1

0
@echo off
setlocal EnableDelayedExpansion
set destination=C:\put the destination folder here
set newName=10000
rem Read the text file line by line
for /F "delims=" %%a in (thefile.txt) do (
   rem Check if a folder with that name already exists in the destination directory.
   set "folder=%%~Na"
   if exist "%destination%\!folder!" (
      rem If yes, then rename the folder and copy it.
      call :getNewName folder
   )
   rem If not, copy without renaming the folder.
   md "%destination%\!folder!"
   copy "%%~a" "%destination%\!folder!"
)
rem Finally, I want to sequentially rename all the folders in the destination starting with 0000. 
cd /D "%destination%"
set n=9999
for /D %%a in (*) do (
   set /A n+=1
   if "%%a" neq "!n:~-4!" (
      ren "%%a" "!n:~-4!"
   )
)
goto :EOF

:getNewName folder
   set /A newName-=1
   set folder=%newName%
   if exist "%destination%\%folder%" goto getNewName
exit /B
于 2012-11-01T03:11:19.207 回答