Перемещение и переименование в пакетном режиме - PullRequest
0 голосов
/ 13 сентября 2010

Как написать пакетную программу, которая может перемещать файлы с .txt из папки (включая файлы в подпапке) в другую папку и переименовывать ее в форме folderName_subfolderName_Filename.extension

Ответы [ 2 ]

1 голос
/ 13 сентября 2010

Следующий фрагмент должен помочь. Измените его в соответствии со своими потребностями.

@ECHO OFF
REM Put the source and destination folde names here.
REM You can use %1 and %2 instead if you want to pass
REM folders as command line parameters

SET SOURCE_FOLDER=C:\SRC
SET TARGET_FOLDER=C:\DST

REM This is needed for variable modification inside the FOR loop
SETLOCAL ENABLEDELAYEDEXPANSION

REM The FOR loop lists all files recursively beginning in
REM %SOURCE_FOLDER% matching the *.txt pattern.
REM Filenames can be accessed in th loop via the %%F variable
FOR /R %SOURCE_FOLDER% %%F IN (*.txt) DO (

   REM Put the path and filename into the FILE_NAME variable
   SET FILE_NAME=%%~pnxF

   REM Transform the path to new filename 
   REM (replace '\' with '_' and strip the first '\')
   SET FILE_NAME=!FILE_NAME:\=_!
   SET FILE_NAME=!FILE_NAME:~1!

   REM This is the actual MOVE command creating the 
   REM targest filename from the variables.
   MOVE "%%F" "%TARGET_FOLDER%\!FILE_NAME!"
)
0 голосов
/ 13 сентября 2010

принятое решение:

использование: moveit TargetFolder DestinationFolder NameOfTargetFolder

Образец: moveit C:\MyFolder C:\MySecondFolder MyFolder

moveit.bat:

Set target=%~1
Set destination=%~2
Set prefix=%~3

for /f "tokens=*" %%f in ('dir /b %target%\*.txt') do move "%target%\%%f" "%destination%\%prefix%_%%f"

for /f "tokens=*" %%s in ('dir /b/ad %target%\*') do call moveit.bat "%target%\%%s" "%destination%" %prefix%_%%s
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...