Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

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

Ответить
Настройки темы
CMD/BAT - [решено] Проверки перед копированием на существование папки похожей папки.

Новый участник


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

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


Всем добрый день. Не знаю быть может кто-то сталкивался с таким скриптом программы. Нужно чтобы перед копирование папки с названием "New Folder" проверила на диске С если такая папка, то перестанет копирование, если её нету копирование продолжает. Спасибо за ранее если кто поможет.

Отправлено: 13:27, 05-01-2015

 

Ветеран


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

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


Код: Выделить весь код
if not exist "c:\New Folder\." (
    copy …
    copy …
    copy …
)
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:08, 05-01-2015 | #2



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

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

mwz mwz вне форума

Аватара для mwz

Ушел из жизни


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

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


Цитата Iska:
if not exist "c:\New Folder\. »
Не с замечанием, а с вопросом: а не лучше "if not exist "c:\New Folder\nul"?

-------
Mikhail Zhilin


Отправлено: 16:12, 05-01-2015 | #3


Ветеран


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

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


Цитата mwz:
Не с замечанием, а с вопросом: а не лучше "if not exist "c:\New Folder\nul"? »
Такой файл или папка теоретически может существовать в искомом каталоге. Посему предпочитаю пользовать точку как ссылку на имя текущего каталога. Для NTFS такая запись наличествует и в корневом каталоге (про FAT/FAT32 этого не скажу, не помню и не проверял).

Отправлено: 16:18, 05-01-2015 | #4

mwz mwz вне форума

Аватара для mwz

Ушел из жизни


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

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


Цитата Iska:
Такой файл или папка теоретически может существовать в искомом каталоге. »
Это зарезервированное слово. Псевдофайл nul cуществует в любом существующем каталоге. Если же каталог не существует – то и файл nul в несуществующем найден не будет.

PS
Кстати, в отличие от DOS, где приходилось проверять наличие каталога проверкой именно на файл nul в искомом каталоге, в последних Windows достаточна проверки просто на каталог, т.е.
if exist "c:\New Folder"
Однако в этом случае действительно под проверку попадут и файлы – и результат может быть неожиданным.

-------
Mikhail Zhilin


Последний раз редактировалось mwz, 05-01-2015 в 17:09.


Отправлено: 17:00, 05-01-2015 | #5


Ветеран


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

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


Цитата mwz:
Не с замечанием, а с вопросом: а не лучше "if not exist "c:\New Folder\nul"? »



Вот мои результаты тестирования в Windows 8.1:


Код: Выделить весь код
C:\>if exist "C:\Program Files\nul" (echo It's a folder!) else (echo It's a file
 or I have none of that!)
It's a file or I have none of that!

C:\>if exist C:\PROGRA~1\nul (echo It's a folder!) else (echo It's a file or I h
ave none of that!)
It's a folder!

C:\>if exist "C:\Program Files\." (echo It's a folder!) else (echo It's a file o
r I have none of that!)
It's a folder!

C:\>if exist C:\PROGRA~1\. (echo It's a folder!) else (echo It's a file or I hav
e none of that!)
It's a folder!

.



А вот ответ известного (по крайней мере, мне) эксперта по командной строке и пакетным файлам Dave Benham ( http://stackoverflow.com/questions/8...669636#8669636 ):


Цитата:
I know the
Код: Выделить весь код
if exist path\nul
test for a folder used to work on MS-DOS. I don't know if it was broken with the introduction of long file names.

I knew that
Код: Выделить весь код
if exist "long path\nul"
does not work on Windows batch. I did not realize until today that
Код: Выделить весь код
if exist path\nul
works on Vista and beyond as long as path is in the short 8.3 form.

The original code appears to work on Vista. It seems like it should work on XP as well, but I believe the following XP bug is getting in the way: Batch parameter
Код: Выделить весь код
%~s1
gives incorrect 8.3 short name.

The original code does not need the FOR loop, it could simply use
Код: Выделить весь код
%~s1
Here is a variation that fully classifies a path as INVALID, FILE or FOLDER. It works on Vista, but does NOT work on XP because of the %~s1 bug. I'm not sure how it performs on MS-DOS.
Код: Выделить весь код
@echo off
if not exist "%~1" ( set "type=INVALID" ) else if exist %~s1\nul ( set "type=FOLDER" ) else ( set "type=FILE" )
@echo "%~1" = %type%
I believe this variation will work with nearly all versions of Microsoft batch, including MS-DOS and XP. (it obviously won't work on early versions of DOS that don't support PUSHD)
Код: Выделить весь код
@echo off
if exist "%~1" (2>nul pushd "%~1" && (popd&set "type=FOLDER") || set "type=FILE" ) else set "type=INVALID"
echo "%~1" = %type%
UPDATE 2014-12-26

I'm pretty sure the following will work on all versions of Windows from XP onward, but I have only tested on Win 7.
Код: Выделить весь код
@echo off
if exist %1\ (
  echo %1 is a folder
) else if exist %1 (
  echo %1 is a file
) else (
  echo %1 does not exist
)

.



А вот парадокс от меня (первый раз вижу, чтобы кавычки в таком аспекте влияли на результат):


Код: Выделить весь код
C:\>if exist C:\PROGRA~1\nul (echo It's a folder!) else (echo It's a file or I h
ave none of that!)
It's a folder!

C:\>if exist "C:\PROGRA~1\nul" (echo It's a folder!) else (echo It's a file or I
 have none of that!)
It's a file or I have none of that!

.





Цитата mwz:
Цитата Iska:
Такой файл или папка теоретически может существовать в искомом каталоге. »
Это зарезервированное слово. »



При желании их можно создать:
Код: Выделить весь код
md \\.\C:\Folder\nul>\\.\D:\Folder\nul
.
Эта команда создаст одновременно папку "C:\Folder\nul" и файл "D:\Folder\nul" в существующей папке.
Это сообщение посчитали полезным следующие участники:

Отправлено: 06:58, 06-01-2015 | #6



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Проверка папки на существование, с условием tAnk3o3 Скриптовые языки администрирования Windows 4 05-03-2013 11:06
CMD/BAT - Помогите с копированием файла(ов) в сетевые папки ZamUtil Скриптовые языки администрирования Windows 18 02-12-2012 23:28
CMD/BAT - [решено] Копирование папки с исходного места и удаление одноименной папки на конечном месте cool_tiger Скриптовые языки администрирования Windows 3 11-03-2012 13:58
CMD/BAT - Нужна помошь:скрипт для проверки изменения размера папки, с перезапуском программы abezze Скриптовые языки администрирования Windows 0 20-12-2011 16:43
CMD/BAT - батник для проверки даты последнего изменения папки alex_dmn Скриптовые языки администрирования Windows 2 15-02-2011 20:32




 
Переход