Показать полную графическую версию : [решено] Копирование файла в кучу разных папок с переименованием его имени в имя папки.
Добрый день! Помогите пожалуйста с батником.
Нужно скопировать файл в кучу папок, при этом задавая имя файлу такое же как и имя папки, в которую он копируется (расширение файла не меняется, только имя).
megaloman
25-05-2020, 13:45
Bagsya, где находится (например, в какой-то папке)
@Echo Off
Set "FileIn=Z:\Box_In\Обычная ерунда.ха ха ха"
Set "BoxOut=Z:\Box_Out"
For %%f In ("%FileIn%") Do (
FOR /F "usebackq delims=" %%d IN (`2^>nul Dir "%BoxOut%" /S /B /A:D`) DO >nul Copy "%FileIn%" "%%d\%%~nxd%%~xf"
)
Exit /B
или откуда берётся (напримпр, список) куча?@Echo Off
Set "FileIn=Z:\Box_In\Обычная ерунда.ха ха ха"
Set BoxOut="Z:\Box_Out\_Work" "Z:\Box_Out\_XLS" "Z:\Box_Out\Дискета от книги" "Z:\Музыка\Манго Манго"
For %%f In ("%FileIn%") Do (
FOR %%d IN (%BoxOut%) DO >nul 2>&1 Copy "%FileIn%" "%%~d\%%~nxd%%~xf"
)
Exit /B
Bagsya, тогда Вам следовало бы озадачиться вопросом — как узнать перечень этой кучи папок?
Предметно так, полный путь файла: e:\4\a0001.vhdshows и его надо скопировать во все папки находящиеся в e:\5 (там папки вида e:\5\a0001, e:\5\a0002 и т.д., меняются буквы и цифры). И вот в папку a0002 файл должен копироваться с именем a0002.vhdshows, а в папку, например, с0845 - с именем с0845.vhdshows.
@echo off
set "file=e:\4\a0001.vhdshows"
set "sdir=e:\5"
call :#copy "%sdir%" "%file%"
pause& exit
:#copy
for /d /r "%~1" %%a in (*) do >nul copy "%~2" "%%a\%%~nxa%~x2"
exit /b
вот так прописал, запустил, пишет "отказано в доступе".
@Echo Off
Set "FileIn=e:\4\a0001.vghdshows"
Set "BoxOut=e:\5"
For %%f In ("%FileIn%") Do (
FOR /F "usebackq delims=" %%d IN (`2^>nul Dir "%BoxOut%" /S /B /A:D`) DO >nul Copy "%FileIn%" "%%d\%%~nxd%%~xf"
)
Exit /B
Тоже пишет "отказано в доступе"
@echo off
set "file=e:\4\a0001.vhdshows"
set "sdir=e:\5"
call :#copy "%sdir%" "%file%"
pause& exit
:#copy
for /d /r "%~1" %%a in (*) do >nul copy "%~2" "%%a\%%~nxa%~x2"
exit /b
тогда запуск от админа или ярлык с запускать с админ правами или решать проблему с доступом, к нам-то какие претензии.
и неплохо бы сказать как запускаете это все, чудес тут разных хватает.
Сам не понимаю почему "отказано в доступе". Командную строку с правами администратора запускал и из нее уже батник и сам батник по правой кнопке мыши выбирал запуск от администратора. Вин7, домашний комп, ничего особенного нет.
Вот скриншоты папок и результат обоих батников.
megaloman
25-05-2020, 16:17
Bagsya, Проделайте батник, файл C:\txt.txt прикрепите к сообщению@Echo Off
Set "FileIn=e:\4\a0001.vghdshows"
Set "BoxOut=e:\5"
>c:\txt.txt 2>&1 dir "%FileIn%" /b /a:-D
>>c:\txt.txt 2>>&1 dir "%BoxOut%" /b /a:D /S
Exit /B
megaloman
25-05-2020, 19:09
Bagsya,
Тупой вопрос: а руками хоть один файл удаётся скопировать?
В предоставленном txt.txt первой строкой идет:
Файл не найден
e:\5\a0001
..............
То есть непонятно, что с указанием файла e:\4\a0001.vghdshows
На скриншоте e:\4\a0001.vhdshows
Попробуйте отладочный вариант, допустим, Вы его назовете run2.bat@Echo On
Set "FileIn=e:\4\a0001.vghdshows"
Set "BoxOut=e:\5"
For %%f In ("%FileIn%") Do (
FOR /F "usebackq delims=" %%d IN (`2^>nul Dir "%BoxOut%" /S /B /A:D`) DO Copy "%FileIn%" "%%d\%%~nxd%%~xf"
)
Exit /B Запустите его в командном окне в виде
>C:\txt1.txt 2>&1 run2.bat
файл txt1.txt прикркпите
Руками все копируется нормально. Имя и расширение файла проверил, все правильно было в батниках прописано (a0001.vhdshows). Применил сейчас ваш отладочный вариант и о чудо, файл скопировался во все папки как надо. Отчет txt1.txt прилагаю. Вопрос, что было не так?
в каком именно боевом варианте? Если не сложно напишите с правильными путями батник, а то у меня при запуске батников все равно "отказано в доступе" пишет, хотя пути вроде изначально правильные прописаны.
megaloman
25-05-2020, 21:29
Bagsya,
@Echo Off
Set "FileIn=e:\4\a0001.vhdshows"
Set "BoxOut=e:\5"
For %%f In ("%FileIn%") Do (
FOR /F "usebackq delims=" %%d IN (`2^>nul Dir "%BoxOut%" /S /B /A:D`) DO >nul Copy "%FileIn%" "%%d\%%~nxd%%~xf"
)
Exit /B
В прикреплённом файле мой батник, переименуйте его. У меня он работает с Вашими путями - взял полностью из txt.txt
Может, Ваш батник имеет имя, совпадающее с какой-то программой?
Блин, ну что за беда, понять не могу, посмотрите на скриншот, вроде все верно и пути и каталоги, но "отказано в доступе" и все((( в ручную все копируется, проблем с доступом нет никакого.
megaloman
25-05-2020, 22:37
Bagsya, Вместо Echo Off сделайте Echo On, посмотрите, что получится
Вобщем оказалось что все копирует как надо по факту, просто эта надпись "отказано в доступе" выскакивает и с толку сбивает))) Не понятно откуда она берется. Прилагаю скриншот командной строки и вывод результата в 1.txt. Спасибо за помощь!
Bagsya,
ну попробуйте еще выполнить пункты отсюда (https://inforkomp.com.ua/oshibki/ispravlenie-laquo-oshibki-5-otkazano-v-dostupe-raquo-pri-zapuske-sluzhb.html).
просто эта надпись "отказано в доступе" выскакивает и с толку сбивает))) Не понятно откуда она берется. »
Проверьте разрешения на каталог «e:\5\c0121»:
…
e:\4>Copy "e:\4\a0001.vhdshows" "e:\5\c0121\c0121.vhdshows"
Отказано в доступе.
Скопировано файлов: 0.
…
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.