Имя пользователя:
Пароль:
 | Правила  

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

Ответить
Настройки темы
CMD/BAT - [решено] Проверка создана ли папка

Аватара для dosperados

Пользователь


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

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


Здравствуйте собратья программисты, встала задача...

Необходимо в бат файле провести проверку папки на создание т.е. если папка существует то добавить в неё файлы если её нет то создать папку и сделать другие действия, я где-то видел что это легко осуществляется с помощью батника только теперь не могу найти где это я видел... подскажите пож-та...
вроде такая проверка осуществлялась через null но как точно совсем не помню
Заранее спасибо.

Отправлено: 18:39, 23-06-2010

 

Ветеран


Contributor


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

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


Код: Выделить весь код
@Echo Off

Set Papka=D:\Kuku

If Exist "%Papka%\*.*" Echo Папка %Papka% есть
If Not Exist "%Papka%\*.*" Echo Папки %Papka% нет
pause
или
Код: Выделить весь код
@Echo Off

Set Papka=D:\Kuku

If Exist "%Papka%\*.*" (
   Echo Папка %Papka% есть
) Else (
   Echo Папки %Papka% нет
)
pause

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


Последний раз редактировалось megaloman, 23-06-2010 в 19:18. Причина: Дополнил

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

Отправлено: 19:14, 23-06-2010 | #2



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

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


Аватара для dosperados

Пользователь


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

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


Цитата megaloman:
Код:
@Echo Off
Set Papka=D:\Kuku
If Exist "%Papka%\*.*" Echo Папка %Papka% есть
If Not Exist "%Papka%\*.*" Echo Папки %Papka% нет
pauseили
Код:
@Echo Off
Set Papka=D:\Kuku
If Exist "%Papka%\*.*" (
Echo Папка %Papka% есть
) Else (
Echo Папки %Papka% нет
)
pause »
вот все в этом коде все работает нормально исправил просто не указал одну команду...
Код: Выделить весь код
@set dir=d:\rar
@If Exist "%dir%\%computername%" (
   Echo Папка %computername% есть 
   goto end
) Else (
   Echo Папки %computername% нет
   Echo создаем папку %computername%
   md %computername%
   exit
)
:end
echo papka est
pause
exit
все сам разобрался и исправил... как я был слеп))) на такая маленькая ошибка

Последний раз редактировалось dosperados, 23-06-2010 в 21:05. Причина: нашел ошибку


Отправлено: 20:42, 23-06-2010 | #3


Аватара для ShaddyR

Железных Дел Мастер


Moderator


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

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


Цитата dosperados:
почемуто exist работает както коряво »
потому, что он проверяет в реализации megaloman то, что ему сказано - наличие файлов в папке, а не наличие самой папки.
В простейшем случае, если путь соответствует требования DOS (нет пробелов, англ. язык, не больше 8-ми символов в имени) можно проверять так:
if exist %papka%\nul

Универсальнее будет так:
cd %papka%>nul
if /i %errorlevel% geo 1 (echo нет
) else (echo есть )

или так
cd %papka%
goto exist%errorlevel%
:exist0
echo есть
exit
:exist1
echo нет
exit

(если тебя не смущает мат на экране в случае невозможности перейти в нужную папку )

-------
[FAQ] Как определить аппаратную конфигурацию компьютера и правильно задать вопрос
-------
В благодарность за помощь нажимаем ссылочку "Полезное сообщение" внизу этого самого сообщения (подробнее). Помните: админ конфеты НЕ ПЬЁТ ;)
-------
Говори, что думаешь и думай, что говоришь! (c) || МОЙ ShaddyR.at.UA/blog - Новая метла и инвентаризация)


Последний раз редактировалось ShaddyR, 23-06-2010 в 21:30.


Отправлено: 21:10, 23-06-2010 | #4


Аватара для El Sanchez

Ветеран


Contributor


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

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


Цитата dosperados:
Необходимо в бат файле провести проверку папки на создание т.е. если папка существует то добавить в неё файлы если её нет то создать папку и сделать другие действия »
dosperados, для примера, если папка C:\temp не существует, то создать ее и копировать в нее все файлы *.txt из папки C:\source, если существует, то удалить файлы *.txt из папки C:\source:

Код: Выделить весь код
@Echo Off
Set Folder=C:\temp
Set Source=C:\source

MD "%Folder%" 2>nul && Del /F /Q  "%Source%\*.txt" || Copy "%Source%\*.txt" "%Folder%" /Y >nul

Отправлено: 21:11, 23-06-2010 | #5


Ветеран


Contributor


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

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


ShaddyR,
Цитата:
потому, что он проверяет в реализации megaloman то, что ему сказано - наличие файлов в папке, а не наличие самой папки
- Вы не вполне правы, проверьте, пожалуйста, мою реализацию, я непроверенные коды не имею привычки размещать где-либо. У меня проверяется наличие папки, даже если там нет файлов. Если по указанному пути есть файл, совпадающий с именем желаемой папки, папка не создастся, мой способ работает. Проверьте, убедитесь. Вот код, который создаёт папку с подпакой по имени компьютера. Я проверил, работает.
Код: Выделить весь код
@Echo Off

set dir=d:\rar

If Exist "%dir%\%computername%\*.*" (
    Echo Папка %computername% есть 
) Else (
    Echo Папки %computername% нет
    Echo создаем папку %computername%
    md "%dir%\%computername%"
    If Not Exist "%dir%\%computername%\*.*" (
       Echo Не удалось создать папку "%dir%\%computername%"
       Pause
       GoTo EOF
    ) Else (
       Echo Папка %computername% есть
    )
)

rem Далее делаем что нужно
pause
Кстати, если имя папки будет, например, d:\У попа была собака
set dir=d:\У попа была собака
Мой способ работает, если батник набран в 866 кодировке (DOS)
Приведенный код имеет ценность только с той точки зрения, что можно показать, создаётся ли новая папка. На практике, это вообще не нужно. Главное, чтобы папка была. Поэтому код выше можно упростить с точки зрения логики
Код: Выделить весь код
@Echo Off

set dir=d:\У попа была собака

rem Создаю папку безо всякой проверки.  
rem Даже если она уже есть, выдастся ошибка, но батник продолжит выполнение

md "%dir%\%computername%" 1>nul 2>nul
If Not Exist "%dir%\%computername%\*.*" (
       Echo Не удалось создать папку "%dir%\%computername%"
       Pause
       GoTo EOF
) 

Echo Папка %computername% есть

rem Далее делаем что нужно
pause

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


Последний раз редактировалось megaloman, 23-06-2010 в 22:30.


Отправлено: 21:51, 23-06-2010 | #6


Аватара для ShaddyR

Железных Дел Мастер


Moderator


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

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


megaloman, я ведь не сказал, что твой вариант не работает (он работает, я проверял). Он не должен работать согласно логики кода, а значит его сработка основана на чем-то третьем, что в определенных случаях может и не сработать.

-------
[FAQ] Как определить аппаратную конфигурацию компьютера и правильно задать вопрос
-------
В благодарность за помощь нажимаем ссылочку "Полезное сообщение" внизу этого самого сообщения (подробнее). Помните: админ конфеты НЕ ПЬЁТ ;)
-------
Говори, что думаешь и думай, что говоришь! (c) || МОЙ ShaddyR.at.UA/blog - Новая метла и инвентаризация)


Отправлено: 03:06, 24-06-2010 | #7



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Проверка volkov99 Тест-форум 0 29-04-2010 16:07
Проверка CD Actor Автоматическая установка Windows 2000/XP/2003 15 04-04-2009 13:27
MAC OS Под какие задачи создана эта ОС? Sparkster Хочу все знать 6 10-09-2007 10:47
Проверка грамматики Cadillac Программное обеспечение Windows 2 16-03-2007 18:40
Проверка Диска RuLe Хочу все знать 8 05-01-2007 20:05




 
Переход