Показать полную графическую версию : [решено] как сделать проверку файла (файлов) через cmd
CaHeK_pk
29-09-2011, 01:45
В принципе в теме все написано. Нужно что бы при запуске данного приложения, оно проверило есть ли данный файл в конкретном месте. и по возможности добавило результат в лог "log_file.log"
@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
и еще по этой же теме. Как сделать что бы проверял несколько файлов на наличие, и записывал результаты в один лог файл.
все перепробовал - ничего не выходит
Anonymоus
30-09-2011, 05:22
Вот так:
@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, спасибо за подсказку, я об этом не подумал.
Файлы для проверки записываются через разделитель - ";" »
Лучше для сего применять какой-либо заведомо недопустимый для объектов файловой системы символ.
Файлы для проверки записываются через разделитель - "/" »
Anonymоus, я Вас замучаю, наверное… «/» — тоже вполне допустимый символ в путях (для NT-систем).
Я прошу прощения, что сразу не указал допустимый перечень.
Naming Conventions (http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx#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
< > " | - сразу отпадают, так как нуждаются в экранировании.
: \ / - могут содержаться в путях.
Так что выбираем "*" (проверял, работает с ним). Исправил пост со скриптом, еще раз спасибо за уточнения.
«:» … - могут содержаться в путях. »
Угу. Сам говорил про пути, а про «:» — как-то выпало из внимания.
CaHeK_pk
30-09-2011, 19:56
Если планируются русские буквы в путях\именах файлов, то сохранять в 866 DOS кодировке »
немного не понял... как сохранять в такой кодировке?
P.S пользуюсь блокнотом, может надо какой-нибудь программой сохранять?...
и еще: я так понял команды "cd.." для перехода на уровень выше, и "@Echo" для комментариев в данном коде не работают...
как сохранять в такой кодировке? »
AkelPad или notepad++
немного не понял... как сохранять в такой кодировке? »
Как добиться правильной работы пакетных файлов (*.bat, *.cmd), содержащих кириллические пути? (http://www.oszone.net/2774#q8)
и еще: я так понял команды "cd.." для перехода на уровень выше, и "@Echo" для комментариев в данном коде не работают... »
«cd» работает. Только зачем он там? «@Echo» — это не комментарий, комментарий — это «rem».
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.