Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Переименование и копирование файлов

Ответить
Настройки темы
CMD/BAT - [решено] Переименование и копирование файлов

Пользователь


Сообщения: 60
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый день! Хочу создать батник, который бы переименовывал файлы в папке и копировал их в итоговую "Total"

Есть две папки, "1" и "2" и в обеих лежат файлы c именами:
check1,check2,check3.... и т.д

Нужно чтобы нумерация начиналась с 001 и к имени добавлялся номер папки.

например check001_1, check002_1, check003_1 - это для папки "1" и например check001_2, check002_2, check003_2 - для папки "2"

файлов может быть более тысячи

Для меня это нереально(

Пробовал только переименовывать вот таким кодом

for /f "tokens=*" %%a in ('dir /b C:\Onkassa\Rename\1\*.*') do ren C:\Onkassa\Rename\1\%%a 001_1%%a

в итоге переименован только первый файл 001_1check

Отправлено: 11:24, 17-08-2018

 

Аватара для YuS_2

Crazy


Contributor


Сообщения: 1171
Благодарности: 487

Профиль | Отправить PM | Цитировать


Цитата Iska:
И как я понимаю, поскольку PowerShell исполняет файлы только с определёнными расширениями (так?), фокус провернуть не удастся. »
Да ладно... можно ведь и так:
Код: Выделить весь код
<# ::
@echo off
powershell -ex bypass -c "&{[scriptblock]::create((gc '%~f0' -enc OEM) -join [char]10).invoke()}"
pause&exit /b
#>
$a='Привет мир!'
$b='И вам не кашлять!'
$a
$b
И кстати, в powershell v 6.0 можно и так:
Код: Выделить весь код
<# ::
@echo off
pwsh -f "%~f0" %*
pause&exit /b
#>
$a='Привет мир!'
$b='И вам не кашлять!'
$a
$b

-------
scio me nihil scire. Ѫ


Последний раз редактировалось YuS_2, 18-08-2018 в 14:31. Причина: доплнение

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:11, 18-08-2018 | #21



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата YuS_2:
Да ладно... можно ведь и так: »
Поясните, что с этим кодом делать?

Отправлено: 14:22, 18-08-2018 | #22


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1171
Благодарности: 487

Профиль | Отправить PM | Цитировать


Цитата Iska:
Поясните, что с этим кодом делать? »
сохранить в файле, например, с именем run.bat и запустить
кодировка скрипта в первом варианте OEM и UTF8 без BOM во втором случае

PS Ах, да, надо в первом скрипте заменить pwsh на powershell... ну, чтобы встроенный отработал, а не v6.0
поправил скрипты

-------
scio me nihil scire. Ѫ


Последний раз редактировалось YuS_2, 18-08-2018 в 14:33.


Отправлено: 14:27, 18-08-2018 | #23


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата YuS_2:
сохранить в файле, например, с именем run.bat и запустить
кодировка скрипта в первом варианте OEM »
Спасибо, ясно. Работает.

Avast тут же отреагировал . Удалил пакетный файл и попытался удалить powershell.exe.

Отправлено: 15:15, 18-08-2018 | #24


Ветеран


Contributor


Сообщения: 2710
Благодарности: 1686

Профиль | Отправить PM | Цитировать


Если без эмоций буквально прочесть поставленную задачу и не напрягать воображение, то:
1. У файлов есть общий префикс, в постановке он check
2. После префикса идёт номер, в постановке он <999
3. Надо получить новое имя:
префикс+номер, дополненный при необходимости нулями до трёх знаков+_+имя папки
То вот еще вариант (скрипт3), тупо и прямолинейно, зато надёжно
Код: Выделить весь код
@Echo Off
cls
	Set "BoxIn=Z:\Box_In"
	Set "Folds="1111" "2222""
	Set "Pref=check"
	Set /A Max=1000

	Set "BoxOut=Z:\Box_In\Total"
	If Not Exist "%BoxOut%" Md "%BoxOut%"

	Set /A Max1=%Max%-1
	FOR /L %%n IN (0,1,%Max1%) DO FOR %%d IN (%Folds%) DO (
		FOR %%f IN ("%BoxIn%\%%~d\%Pref%%%n.*") Do (
			Set /A MMax=%Max%+%%n
			Call Copy "%%f" "%BoxOut%\%Pref%%%MMax:~1%%_%%~d%%~xf" >nul
			Call Ren "%%f" "%Pref%%%MMax:~1%%_%%~d%%~xf" >nul
		)
	)
Pause
GoTo :Eof

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 18-08-2018 в 18:56.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:14, 18-08-2018 | #25


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1171
Благодарности: 487

Профиль | Отправить PM | Цитировать


Цитата Iska:
Удалил пакетный файл и попытался удалить powershell.exe. »
И правда что, чего это он там делает? Да и каталог windows, тоже подозрительный набор файлов содержит, надо и его проредить...

-------
scio me nihil scire. Ѫ


Отправлено: 16:26, 18-08-2018 | #26


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата megaloman:
Если без эмоций буквально прочесть поставленную задачу и не напрягать воображение, то: …»
Скорее всего, как-нибудь так и есть.

YuS_2, видимо такой гибридный способ пошёл в массы. Вероятно — в массы недописателей-вирусомайнеров.

Отправлено: 16:50, 18-08-2018 | #27


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1171
Благодарности: 487

Профиль | Отправить PM | Цитировать


Цитата Iska:
видимо такой гибридный способ пошёл в массы. Вероятно — в массы недописателей-вирусомайнеров. »
Возможно. Вот только, каким бы массовым ни был этот способ, в нем нет ничего вирусного, если не считать таковым вообще запуск скриптов в ОС. К тому же, антивирус должен вирусную активность контролировать (это мое личное мнение), а не быть комбайном, стерегущим каждый вздох, заодно и запуск скриптов, да плюс авторские права и т.д., и т.п., и тут же выписывающим "расстрел на месте".

-------
scio me nihil scire. Ѫ


Отправлено: 17:04, 18-08-2018 | #28


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Кхе-кхе … В оное время все, поголовно все значимые антивирусы ругались на банальный CreateObject("ADODB.Stream") … .SaveToFile bla-bla-bla, не особо затрудняя себя проверкой того, что и куда пишется при этом: сказано, что ADODB.Stream .SaveToFile позволяет создавать и записывать двоичные файлы — стало быть, ату его, ату! Причём, обходилось это банальнейшим образом, каким-нибудь CreateObject("ADO" & "DB.Str" & "eam") .

Отправлено: 18:09, 18-08-2018 | #29


Пользователь


Сообщения: 60
Благодарности: 0

Профиль | Отправить PM | Цитировать


megaloman,

Спасибо огромное! Но у меня вопрос возник, можешь вот эти 2 строки прокомментировать?

Цитата megaloman:
Set "BoxIn=Z:\Box_In"
Set "Folds="1111" "2222"" »
Может я что-то не правильно понимаю, Set "BoxIn=Z:\Box_In - это путь к исходной папке с файлами! ? но у меня две папки с исходными файлами, допустим 1 и 2. И в каждой лежат файлы с префиксом "check"

Отправлено: 07:30, 20-08-2018 | #30



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Переименование и копирование файлов

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Переименование папки и копирование новой из сети. Lorttt Скриптовые языки администрирования Windows 19 19-06-2017 18:56
CMD/BAT - Копирование файла и переименование согласно списка из exel TPOJIb_55 Скриптовые языки администрирования Windows 4 01-06-2016 09:28
CMD/BAT - Копирование файлов из подкаталогов и их переименование в название папки lexxxyatina Скриптовые языки администрирования Windows 7 13-11-2014 09:44
CMD/BAT - [решено] Копирование и переименование файла по особой маске DARK-Silver666 Скриптовые языки администрирования Windows 5 20-12-2012 21:22
VBS/WSH/JS - [решено] переименование и копирование папки Anufriev Скриптовые языки администрирования Windows 6 22-05-2012 08:11




 
Переход