Я надеюсь получить некоторую помощь с этим, я думаю об использовании командной строки для следующих действий:
Шаг ОДИН файл в папке (в которой есть сотни файлов) в новую папку (новая папка - это папка, в которой эта папка В, так что на один каталог вверх)
Переименуйте файл (в основном все файлы имеют 852 в имени файла, и я хочу удалить что-либо между 852 и .ТЕКСТ)
Ваша помощь очень ценится !!
Спасибо!!
Последующий прокомментировал пакетный сценарий 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