Показать полную графическую версию : Перенос файлов + переименование
Corecess
20-11-2019, 21:34
Помогите, пожалуйста, со скриптом. Нужен скрипт для переноса и переименования файлов, если такой файл присутствует в целевом каталоге. Поиск по форуму результатов не дал, ничего не работает, что нашла. Ошибки. Может, потому что Виндовс 10? Я сама не сильно разбираюсь, поэтому прошу помощи. Буду крайне благодарна
DJ Mogarych
20-11-2019, 22:12
https://sumtips.com/snippets/powershell/copy-files-rename-duplicates-subfolder/
Corecess
20-11-2019, 22:58
https://sumtips.com/snippets/powershell/copy-files-rename-duplicates-subfolder/
Спасибо большое!
megaloman
21-11-2019, 15:57
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
без ограничений по кол-ву:
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"
Corecess
21-11-2019, 19:16
Спасибо!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.