Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Перенос файлов + переименование (http://forum.oszone.net/showthread.php?t=343022)

Corecess 20-11-2019 21:34 2897338

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

DJ Mogarych 20-11-2019 22:12 2897342

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

Corecess 20-11-2019 22:58 2897349

Цитата:

Цитата DJ Mogarych (Сообщение 2897342)

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

megaloman 21-11-2019 15:57 2897414

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


alpap 21-11-2019 19:08 2897436

без ограничений по кол-ву:
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 2897437

Спасибо!


Время: 09:33.

Время: 09:33.
© OSzone.net 2001-