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

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

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

Новый участник


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

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


Изменения
Автор: Corecess
Дата: 21-11-2019
Помогите, пожалуйста, со скриптом. Нужен скрипт для переноса и переименования файлов, если такой файл присутствует в целевом каталоге. Поиск по форуму результатов не дал, ничего не работает, что нашла. Ошибки. Может, потому что Виндовс 10? Я сама не сильно разбираюсь, поэтому прошу помощи. Буду крайне благодарна

Отправлено: 21:34, 20-11-2019

 

Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


https://sumtips.com/snippets/powersh...tes-subfolder/

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

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

Отправлено: 22:12, 20-11-2019 | #2



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

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


Новый участник


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

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


Спасибо большое!

Отправлено: 22:58, 20-11-2019 | #3


Ветеран


Contributor


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

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


CMD. Переносит указанные файлы из папки и её подпапок. При наличии дубликата, к имени дописывается номер. Максимальный номер 999 (=1000-1). Можете в параметре N число нулей (не равное нулю) в этом максимуме менять в любую сторону
Код: Выделить весь код
@Echo Off
	Set "FileIn=Z:\Box_In\*.*"
	Set "BoxOut=Z:\Box_Out"
	Set /A N=1000

	For /F "usebackq delims=" %%f In (`xcopy "%FileIn%" "%BoxOut%\" /S /L /F /Y`) Do (
		Set "Out=%%f"
		Call :ReMove %N% "%%Out: -> =" "%%"
	)
Exit /B 0

:ReMove
	If "%~3"=="" Exit /B 0
	Set /A i=%1
	Set "FileOut=%~3"
	If Not Exist "%~dp3" Md "%~dp3"
	:Begin
		If Not Exist "%FileOut%" >nul Move %2 "%FileOut%" &Exit /B
		Set /A i+=1
		Set "FileOut=%~dpn3_%i:~1%%~x3%" 
	GoTo :Begin
Exit /B
Если подпапки трогать не надо, то:
Код: Выделить весь код
@Echo Off
	Set "FileIn=Z:\Box_In\*.*"
	Set "BoxOut=Z:\Box_Out"
	Set /A N=1000

	For %%f In ("%FileIn%") Do Call :ReMove %N% "%%~f" "%BoxOut%\%%~nxf"
Exit /B 0

:ReMove
	If "%~3"=="" Exit /B 0
	Set /A i=%1
	Set "FileOut=%~3"
	If Not Exist "%~dp3" Md "%~dp3"
	:Begin
		If Not Exist "%FileOut%" >nul Move %2 "%FileOut%" &Exit /B
		Set /A i+=1
		Set "FileOut=%~dpn3_%i:~1%%~x3%" 
	GoTo :Begin
Exit /B

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


Последний раз редактировалось megaloman, 21-11-2019 в 16:30.

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

Отправлено: 15:57, 21-11-2019 | #4


Ветеран


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

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


без ограничений по кол-ву:
1. Не лезем в подпапки
Код: Выделить весь код
@echo off
set "d_in=C:\papka_in"
set "d_out=C:\papka_out"

for /f "delims=" %%a in ('dir /a-d/b "%d_in%"') do call :l "%d_out%" "%d_in%\%%a"
exit

:l
 setlocal
  pushd "%~1"
   if not exist "%~n2%n%%~x2" (>nul copy "%~2" "%~n2%n%%~x2"& del "%~2") else (set /a n+=1& goto l)
  popd
 endlocal
exit /b
2. Лезем в подпапки
Код: Выделить весь код
@echo off
set "d_in=C:\papka_in"
set "d_out=C:\papka_out"

for /f "delims=" %%a in ('dir /a-d/b/s "%d_in%"') do call :l "%d_out%" "%%a"
exit

:l
 setlocal
  pushd "%~1"
   if not exist "%~n2%n%%~x2" (>nul copy "%~2" "%~n2%n%%~x2"& del "%~2") else (set /a n+=1& goto l)
  popd
 endlocal
exit /b
в моем коде путь: "C:\papka_out" должен существовать или надо добавить строку (перед стр.5, в начале кода, после указания переменных)
Код: Выделить весь код
if not exist "%d_out%" md "%d_out%"
если достаточно копировать. а не перемещать, то из стр.11 убрать: & del "%~2"
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:08, 21-11-2019 | #5


Новый участник


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

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


Спасибо!

Отправлено: 19:16, 21-11-2019 | #6



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Переименование файла по шаблону и перенос нового имени в буфер обмена. Vjjjik Скриптовые языки администрирования Windows 1 03-02-2018 03:18
Переименование файлов B1010 Видео и аудио: обработка и кодирование 0 28-09-2014 11:38
CMD/BAT - Переименование файлов. gen0m.rsw Скриптовые языки администрирования Windows 1 15-10-2010 19:15
переименование файлов mask Программирование и базы данных 6 20-05-2003 00:53
Переименование файлов Pavelz Microsoft Windows NT/2000/2003 7 24-01-2003 10:32




 
Переход