Войти

Показать полную графическую версию : Копирование группы файлов с условием


APST
27-04-2018, 09:24
Добрый день!

Помогите пожалуйста решить следующую задачу: В папке "Папка 1" лежат файлы с именами "Аимя файла" и "имя файла". Необходимо группу файлов с префиксом "А" в начале имени скопировать в "Папка2" и затем у этой группы префикс удалить и уже полученные файлы скопировать в "Папка3"

Данный скрипт копирует файлы с префиксом А во вторую папку и удаляет там первый символ имени, а затем копирует в Папку 3. Не пойму, как сделать проверку на удаление из имени именно "А". И как из Папки 2 копировать в Папку 3 только те файлы у которых этот префикс был удален

@echo off

setlocal

set "folder=b:\Папка1\"
set "folder_vr=b:\Папка2\"
set "folder_source=b:\Папка3\"
set "number=1"

pushd "%folder%"
Copy "A*.enc" "%folder_vr%"
popd

pushd "%folder_vr%"
for /f "delims=" %%i in ('2^>nul dir/a-d/b') do (
set name=%%~ni
2>nul cmd/v/c ren "%%i" "!name:~%number%!%%~xi"

)
popd


pushd "%folder_vr%"
Copy "*.enc" "%folder_source%"

popd

endlocal




Помогите пожалуйста!

megaloman
27-04-2018, 11:10
APST, а зачем столько папок? Почему бы сразу не копировать Аимяфайла из папки1 в имяфайла папки2 ? Скрипач не нуженИли Вы лукавите: надо не копировать фвйлы, а перемещать? Но все равно, можно делать это на раз, не используя промежуточные папки.

APST
27-04-2018, 11:36
Или Вы лукавите: надо не копировать фвйлы, а перемещать? Но все равно, можно делать это на раз, не используя промежуточные папки. »
Нет, не лукавлю, надо именно копировать
APST, а зачем столько папок? Почему бы сразу не копировать Аимяфайла из папки1 в имяфайла папки2 ? »Если без промежуточной папки, то имя файлов без префикса присвоить переменной? Или я опять очень сложно мыслю? не подскажите как?

alpap
27-04-2018, 13:56
не подскажите как? »
megaloman имел ввиду примерно следующее:

@echo off
set "D1=Папка 1"
set "D2=Папка 3"
set "pref=А"

if not exist "%D2%" md "%D2%"
for /f "delims=" %%a in ('2^>nul dir /a-d/b "%D1%\%pref%*"') do set "nf=%%a"& call :cp "%D1%\%%a" "%D2%" "%%nf:~1%%"
pause& exit

:cp
>nul copy "%~1" "%~2\%~3"
exit /b

Как видите папка "Папка 2" тут как-то ни к чему.

APST
27-04-2018, 15:33
Как видите папка "Папка 2" тут как-то ни к чему. »
Спасибо за помощь!

megaloman
27-04-2018, 16:59
alpap, @Echo Off
Cls


Set "D1=Z:\Box_In"
Set "D2=Z:\Box_Out"

Set "Pref=Pre fix_"
rem Set "Pref=A"

If Not Exist "%D2%" Md "%D2%"
For /f "Delims=" %%a in ('2^>nul Dir /a-d/b "%D1%\%Pref%*.*"') Do Set "nf=*%%a" &Call :cp "%D1%\%%a" "%D2%" "%%nf:*%Pref%=%%"
pause& exit

:cp
>nul copy "%~1" "%~2\%~3"
exit /b

alpap
27-04-2018, 20:51
megaloman,
"%%nf:%Pref%=%%" »
но в данном конкретном случае:
"Аимя файла" превратится в "имя фйл"

поэтому надо или конкретно предусмотреть этот вариант или делать все гораздо шире
но я не сторонник предусматривать много возможных вариантов - или один (несколько) или другой подход

megaloman
27-04-2018, 21:19
alpap, Спасибо громадное. Выкрутился, исправил в решении.

APST
28-04-2018, 09:35
megaloman, alpap Спасибо большое за помощь в решении задачи!




© OSzone.net 2001-2012