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

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

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

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


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

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


Изменения
Автор: APST
Дата: 27-04-2018
Добрый день!

Помогите пожалуйста решить следующую задачу: В папке "Папка 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

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

Отправлено: 09:24, 27-04-2018

 

Ветеран


Contributor


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

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


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

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


Последний раз редактировалось megaloman, 27-04-2018 в 11:20.


Отправлено: 11:10, 27-04-2018 | #2



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

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


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


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

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


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

Отправлено: 11:36, 27-04-2018 | #3


Ветеран


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

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


Цитата APST:
не подскажите как? »
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" тут как-то ни к чему.
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:56, 27-04-2018 | #4


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


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

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


Цитата alpap:
Как видите папка "Папка 2" тут как-то ни к чему. »
Спасибо за помощь!

Отправлено: 15:33, 27-04-2018 | #5


Ветеран


Contributor


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

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


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

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


Последний раз редактировалось megaloman, 27-04-2018 в 21:22. Причина: Исправлена ошибка. Спасибо Alpap за замечание

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

Отправлено: 16:59, 27-04-2018 | #6


Ветеран


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

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


megaloman,
Цитата megaloman:
"%%nf:%Pref%=%%" »
но в данном конкретном случае:
"Аимя файла" превратится в "имя фйл"

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

Отправлено: 20:51, 27-04-2018 | #7


Ветеран


Contributor


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

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


alpap, Спасибо громадное. Выкрутился, исправил в решении.

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


Отправлено: 21:19, 27-04-2018 | #8


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


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

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


megaloman, alpap Спасибо большое за помощь в решении задачи!

Отправлено: 09:35, 28-04-2018 | #9



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Помогите с двумя скриптами (резервное копирование и копирование с условием) n_i_x Программирование в *nix 3 21-06-2015 01:54
CMD/BAT - [решено] Копирование папок с условием sjaybez Скриптовые языки администрирования Windows 6 03-08-2014 22:19
VBS/WSH/JS - [решено] Перемещение файлов с условием PAlkovnic Скриптовые языки администрирования Windows 2 20-06-2013 10:12
CMD/BAT - [решено] .bat Копирование с условием TwoThrones Скриптовые языки администрирования Windows 1 09-01-2011 14:51
CMD/BAT - Батник с условием копирвоания новых файлов по фтп. Narkolog Скриптовые языки администрирования Windows 5 29-12-2010 09:48




 
Переход