Войти

Показать полную графическую версию : Скрипт не видит путь


romfus
13-09-2018, 09:34
Добрый день. Такой вопрос. У меня есть скрипт, задача этого скрипта копировать файл с маской в другую папку.
Код скрипта:
echo off
if exist D:\outs\*Волжский*.xls copy D:\outs\*Волжский*.xls "D:\1_ingener\Волжский\f_out\отчет за\"
То есть по идее из папки выбирается файл с маской волжский, и копируется в папку отчет за. Почему то скрипт не видит путь куда копировать. Попробовал вместо f_out отчет за прописать папку 1, скрипт скопировал. Делался скрипт с кодировкой OEM 866. Как я понял скрипт не видит папку f_out. В чем же может быть дело?

Petya V4sechkin
13-09-2018, 10:03
romfus, какую ошибку выдаёт?

Как я понял скрипт не видит папку f_out.
Или папку "отчет за"?

Что покажет команда:
dir /A D:\1_ingener\Волжский\f_out

romfus
13-09-2018, 11:00
dir /A D:\1_ingener\Волжский\f_out » Команда видит папку. Когда я выставляю
"D:\1_ingener\Волжский\f_out\отчет за\" скрипт не копирует. Когда я делаю "D:\1_ingener\Волжский\f_out\1, скрипт тоже не копирует. А когда я делаю "D:\1_ingener\Волжский\1\" Скрипт срабатывает

Petya V4sechkin
13-09-2018, 11:05
romfus, какую ошибку выдаёт?

Iska
13-09-2018, 11:09
Команда видит папку. »
На будущее — не стесняйтесь прикладывать скриншоты.

romfus
13-09-2018, 11:16
Ошибка: D:\outs\Выплаты волжский.xls
Системе не удается найти указанный путь.
Скопировано файлов: 0

Главное если создать папку 1 по пути "D:\1_Ingener\Волжский\1\" все хорошо без ошибок. Скопировано: 1 файлов. Стоит создать папку 1 в папке f_out по пути "D:\1_Ingener\Волжский\f_out\1\" Системе не удается найти указанный путь.
Скопировано файлов: 0

Petya V4sechkin
13-09-2018, 11:27
romfus, можете сделать лог Process Monitor (https://technet.microsoft.com/ru-ru/sysinternals/processmonitor) следующим образом:
запустите Process Monitor;
попытайтесь выполнить скрипт, чтобы получилась ошибка;
сохраните лог: меню File -> Save -> PML-формат;
заархивируйте и выложите на любой файлообменник, например dropmefiles.com.

Стоит создать папку 1 в папке f_out по пути "D:\1_Ingener\Волжский\f_out\1\" Системе не удается найти указанный путь.
Как вариант: либо в имени папки, либо в скрипте может быть кириллическая "о" вместо латинской "o".

romfus
13-09-2018, 11:41
через dir /A D:\1_ingener\Волжский\f_out видит же папку. а стоит в скрипте указать папку то не видит. ВОт ссылка на архив:
Архив (https://dropmefiles.com/ovuul)

Petya V4sechkin
13-09-2018, 11:45
romfus, так и оказалось: в имени папки f_out кириллическая "о".

romfus
13-09-2018, 11:47
Все я нашел, вы правы. А как быть с папкой Отчет за. ее по прежнему не видит

Все разобрался. Вместо отчёт было написано отчет) Спасибо за помощь

romfus
13-09-2018, 14:44
Еще вопрос не подскажите. Вопрос по поводу маски файла. Имеются 2 файла с маской краснооктябрьский и октябрьский. По скрипту видно что файлы с маской краснооктябрьский отправляются в папку краснооктябрьский, а с маской октябрьский в папку Октябрьский. Получается так что в Октябрьский отправляется и краснооктябрьский и октябрьский, как можно поставить маску чтобы в октябрьский уходил только октябрьский. Вот код:
if exist D:\outs\*Краснооктябрьский*.xls copy D:\outs\*Краснооктябрьский*.xls "D:\3_ingener\Краснооктябрьский\f_оut\отчёт за"
if exist D:\outs\*Октябрьский*.xls copy D:\outs\*"Октябрьский"*.xls "D:\3_ingener\Октябрьский\f_оut\отчёт за"

Iska
13-09-2018, 14:57
Просто одной маской — никак, потому как Краснооктябрьский всегда подпадёт под *Октябрьский*. Если Вы предоставите больше информации по полным и реальным именам файлов, можно будет что-то посоветовать.

megaloman
13-09-2018, 17:17
romfus, Чем Краснооктябрьский отличается от Октябрьский, может символом впереди, например: пробел, минус, подчеркивание и т д.

Iska, Идея! @Echo Off
cls

Set "BoxIn=D:\outs"
Set "Mask=*.xls"

Set "BoxOut=D:\3_ingener"
Set "BoxOut2=f_оut\отчёт за"

Set "Exclude=~tmp.tmp"

Pushd "%BoxOut%" &&(
>%Exclude% cd.

Call :Copiring "%BoxIn%" "%Mask%" "%BoxOut%" "%BoxOut2%" "Краснооктябрьский"
Call :Copiring "%BoxIn%" "%Mask%" "%BoxOut%" "%BoxOut2%" "Октябрьский"

Del %Exclude%
Popd)

pause
GoTo :Eof

:Copiring
If Not Exist "%~3\%~5\%~4" Md "%~3\%~5\%~4"
Xcopy /D /Exclude:%Exclude% "%~1\*%~5%~2" "%~3\%~5\%~4\"
(>>%Exclude% Echo %~5)
GoTo :Eof
Сработает при копировании произвольного числа данных с именами регионов, лишь бы выдерживался порядок, например:
"Краснооктябрьский"
"Октябрьский"
"Верхневолжский"
"Нижневолжский"
"Волжский"
и т д




© OSzone.net 2001-2012