Назад | Перейти на главную страницу

Переместить один файл из папки в другую папку и переименовать ?? Cmd?

Я надеюсь получить некоторую помощь с этим, я думаю об использовании командной строки для следующих действий:

Ваша помощь очень ценится !!

Спасибо!!

Последующий прокомментировал пакетный сценарий 955137.bat мог бы сработать - если я понимаю ваш (слегка неопределенно сформулированный) вопрос:

@ECHO OFF
SETLOCAL EnableExtensions
:: production
:: store folder (that has hundreds of files) name to a variable
    ::       ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓  change to match your conditions
set "_folder=D:\test\955137\sub955137"
:: Change the current directory/folder and store the previous folder/path
pushd "%_folder%"
:: get (any) one file, store its name to the _fileOld variable 
for %%G in (*.txt) do set "_fileOld=%%G"
::  
   :: To delete everything after the string '852'  
   :: first delete '852' and everything before it
   SET "_fileAux=%_fileOld:*852=%"

   ::Now remove this from the original string
   CALL SET "_fileNew=%%_fileOld:%_fileAux%=%%.TXT"
::
   :: debug: show renaming rule
   echo %_fileOld% - %_fileAux% = %_fileNew%  
:: silently copy file up one directory (renaming the target) 
>NUL copy /B "%_fileOld%" ..\"%_fileNew%"
:: debug: show copied file
tree /F %CD%\.. | findstr /I /V "volume"

:: Change directory back to the path most recently stored by the PUSHD command.
popd

Вывод показывает правило переименования для выбранного файла (на самом деле, приведенный выше код всегда устанавливает _fileOld в последний файл в алфавитном порядке с помощью for %%G … петля).

d:\bat> d:\bat\SF\955137.bat
ONExy852ONEab.txt - ONEab.txt = ONExy852.TXT
D:\TEST\955137
│   ONExy852.TXT
│
└───sub955137
        axy852aab.txt
        filexy852fileab.txt
        folderxy852folderab.txt
        inxy852inab.txt
        Movexy852Moveab.txt
        ONExy852ONEab.txt

Обратите внимание, что вышеприведенные выходные данные получены из тестовой среды, специально созданной следующим образом:

@ECHO OFF
SETLOCAL EnableExtensions
:: build testing environment - start
::   store folder (that has hundreds of files) name to a variable
set "_folder=D:\test\955137\sub955137"
::   create a folder
2>NUL MD "%_folder%"
pushd "%_folder%"
::   create some files there in %_folder%
for %%G in (Move ONE file in a folder) do >"%_folder%\%%Gxy852%%Gab.txt" echo %%G
::   remove all files from previous testing
2>NUL erase %CD%\..\*852*.txt
::   built testing environment: list files
tree /F %CD%\.. | findstr /I /V "volume"
::   build testing environment - done
popd
ENDLOCAL

со следующим выводом:

d:\bat> d:\bat\SF\955137create.bat
D:\TEST\955137
└───sub955137
        axy852aab.txt
        filexy852fileab.txt
        folderxy852folderab.txt
        inxy852inab.txt
        Movexy852Moveab.txt
        ONExy852ONEab.txt