Компьютерный форум 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=336657)

romfus 13-09-2018 09:34 2831101

Скрипт не видит путь
 
Добрый день. Такой вопрос. У меня есть скрипт, задача этого скрипта копировать файл с маской в другую папку.
Код скрипта:
Код:

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 2831103

romfus, какую ошибку выдаёт?

Цитата:

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

Что покажет команда:
Код:

dir /A D:\1_ingener\Волжский\f_out

romfus 13-09-2018 11:00 2831119

Цитата:

Цитата Petya V4sechkin
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 2831121

romfus, какую ошибку выдаёт?

Iska 13-09-2018 11:09 2831123

Цитата:

Цитата romfus
Команда видит папку. »

На будущее — не стесняйтесь прикладывать скриншоты.

romfus 13-09-2018 11:16 2831125

Ошибка: 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 2831128

romfus, можете сделать лог Process Monitor следующим образом:
  1. запустите Process Monitor;
  2. попытайтесь выполнить скрипт, чтобы получилась ошибка;
  3. сохраните лог: меню File -> Save -> PML-формат;
  4. заархивируйте и выложите на любой файлообменник, например dropmefiles.com.

Цитата:

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

romfus 13-09-2018 11:41 2831130

через dir /A D:\1_ingener\Волжский\f_out видит же папку. а стоит в скрипте указать папку то не видит. ВОт ссылка на архив:
Архив

Petya V4sechkin 13-09-2018 11:45 2831133

romfus, так и оказалось: в имени папки f_out кириллическая "о".

romfus 13-09-2018 11:47 2831135

Все я нашел, вы правы. А как быть с папкой Отчет за. ее по прежнему не видит

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

romfus 13-09-2018 14:44 2831184

Еще вопрос не подскажите. Вопрос по поводу маски файла. Имеются 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 2831193

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

megaloman 13-09-2018 17:17 2831222

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

Iska, Идея!
Xcopy /Exclude
Сначала запишем в служебный файл имя региона Краснооктябрьский, затем этот файл подсунем xcopy при копировании Октябрьский
Код:

@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

Сработает при копировании произвольного числа данных с именами регионов, лишь бы выдерживался порядок, например:
"Краснооктябрьский"
"Октябрьский"
"Верхневолжский"
"Нижневолжский"
"Волжский"
и т д


Время: 23:11.

Время: 23:11.
© OSzone.net 2001-