Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] как сделать проверку файла (файлов) через cmd (http://forum.oszone.net/showthread.php?t=216731)

CaHeK_pk 29-09-2011 01:45 1762161

как сделать проверку файла (файлов) через cmd
 
В принципе в теме все написано. Нужно что бы при запуске данного приложения, оно проверило есть ли данный файл в конкретном месте. и по возможности добавило результат в лог "log_file.log"

Kazun 29-09-2011 02:06 1762164

Код:

@echo off
chcp 866
set file=C:\file.txt
set log=C:\log_file.log
if exist %file% (
echo Файл %file% присутсвует > %log%
) else echo Файл %file% отсутсвует > %log%


CaHeK_pk 30-09-2011 03:05 1762793

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

Anonymоus 30-09-2011 05:22 1762806

Вот так:
Код:

@Echo Off

Set Files=Текстовый документ.txt*servers.txt*wipe.cpp*jids.config*C:\Temp\amt.log
Set LogFile=log.txt

Echo.>>%LogFile%
:Loop
For /F "tokens=1,* delims=*" %%A In ("%Files%") Do (
If Exist "%%A" (
Echo Файл %%A найден>>%LogFile%) Else (
Echo Файла %%A не существует>>%LogFile%)
If Not "%%B"=="" (Set Files=%%B && Goto Loop)
)

Если планируются русские буквы в путях\именах файлов, то сохранять в 866 DOS кодировке. Файлы для проверки записываются через разделитель - "*"

Iska, спасибо за подсказку, я об этом не подумал.

Iska 30-09-2011 06:58 1762827

Цитата:

Цитата Anonymоus
Файлы для проверки записываются через разделитель - ";" »

Лучше для сего применять какой-либо заведомо недопустимый для объектов файловой системы символ.

Iska 30-09-2011 10:01 1762895

Цитата:

Цитата Anonymоus
Файлы для проверки записываются через разделитель - "/" »

Anonymоus, я Вас замучаю, наверное… «/» — тоже вполне допустимый символ в путях (для NT-систем).

Я прошу прощения, что сразу не указал допустимый перечень.

Naming Conventions (для путей — за вычетом красного; да ещё при использовании UNC путей допустимо указание «?» в префиксе «\\?\»):
Цитата:

The following reserved characters:

< (less than)
> (greater than)
: (colon)
" (double quote)
/ (forward slash)
\ (backslash)

| (vertical bar or pipe)
? (question mark)
* (asterisk)
Поскольку в «In (…)» могут быть и маски, да ещё проблемы с использованием спецсимволов, употребляемых в самих пакетных файлах, то остаётся немного.

Anonymоus 30-09-2011 12:59 1763015

< > " | - сразу отпадают, так как нуждаются в экранировании.
: \ / - могут содержаться в путях.
Так что выбираем "*" (проверял, работает с ним). Исправил пост со скриптом, еще раз спасибо за уточнения.

Iska 30-09-2011 13:58 1763056

Цитата:

Цитата Anonymоus
«:» … - могут содержаться в путях. »

Угу. Сам говорил про пути, а про «:» — как-то выпало из внимания.

CaHeK_pk 30-09-2011 19:56 1763319

Цитата:

Цитата Anonymоus
Если планируются русские буквы в путях\именах файлов, то сохранять в 866 DOS кодировке »

немного не понял... как сохранять в такой кодировке?
P.S пользуюсь блокнотом, может надо какой-нибудь программой сохранять?...

и еще: я так понял команды "cd.." для перехода на уровень выше, и "@Echo" для комментариев в данном коде не работают...

ferget 30-09-2011 20:41 1763339

Цитата:

Цитата CaHeK_pk
как сохранять в такой кодировке? »

AkelPad или notepad++

Iska 30-09-2011 20:51 1763345

Цитата:

Цитата CaHeK_pk
немного не понял... как сохранять в такой кодировке? »

Как добиться правильной работы пакетных файлов (*.bat, *.cmd), содержащих кириллические пути?
Цитата:

Цитата CaHeK_pk
и еще: я так понял команды "cd.." для перехода на уровень выше, и "@Echo" для комментариев в данном коде не работают... »

«cd» работает. Только зачем он там? «@Echo» — это не комментарий, комментарий — это «rem».


Время: 15:38.

Время: 15:38.
© OSzone.net 2001-