Показать полную графическую версию : [решено] Проверка создана ли папка
dosperados
23-06-2010, 18:39
Здравствуйте собратья программисты, встала задача...
Необходимо в бат файле провести проверку папки на создание т.е. если папка существует то добавить в неё файлы если её нет то создать папку и сделать другие действия, я где-то видел что это легко осуществляется с помощью батника только теперь не могу найти где это я видел... подскажите пож-та...
вроде такая проверка осуществлялась через null но как точно совсем не помню
Заранее спасибо.
megaloman
23-06-2010, 19:14
@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
dosperados
23-06-2010, 20:42
Код:
@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
все сам разобрался и исправил... как я был слеп))) на такая маленькая ошибка
почемуто 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
(если тебя не смущает мат на экране в случае невозможности перейти в нужную папку ;))
El Sanchez
23-06-2010, 21:11
Необходимо в бат файле провести проверку папки на создание т.е. если папка существует то добавить в неё файлы если её нет то создать папку и сделать другие действия »
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
megaloman
23-06-2010, 21:51
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, я ведь не сказал, что твой вариант не работает (он работает, я проверял). Он не должен работать согласно логики кода, а значит его сработка основана на чем-то третьем, что в определенных случаях может и не сработать.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC