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

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

Ответить
Настройки темы
CMD/BAT - [решено] Вывести имена файлов *.txt в каталоге

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


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

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


Помогите реализовать задачу.
Нужно создать bat-ник который выведет на экран имена файлов txt
в котологе в котором находиться сам bat. Если txt файлов нет тогда вывести сообщение
пользователю что их нет. Все чтобы выводилось в самой командной строке.

Отправлено: 12:39, 22-06-2011

 

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


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

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


Iska
Цитата:
"%~dp0*.shp" 2^>nul')

Для чего служат цифры перед символом перенаправления?

Отправлено: 19:55, 06-04-2012 | #11



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

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


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


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

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


DesmondTruman,
Спасибо, особенно за это "chcp 1251" теперь в тексте нормальный шрифт, дело в том, что я находил уже подобный код, и эта проблема сейчас можно сказать решена. Еще после исполнения этих команд я пытаюсь вставить открытие этого тхт в конце исполнения этого батника, довольно простым способом, просто с новой строки путь к файлу тхт.
"C:\блабла\блабла\logfile.txt"
Файл то открывается, а вот консоль батника не закрывается автоматом, а только после закрытия самого logfile.txt. Пробовал ниже ставить end, exit - не помогает. Может есть такая команда, которая бы закрыла консоль, а logfile.txt оставался бы открытым при этом.

Отправлено: 20:27, 06-04-2012 | #12


Ветеран


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

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


Цитата DesmondTruman:
Для чего служат цифры перед символом перенаправления? »
Для указания номера потока, который нужно перенаправить. Три потока имеют стандартизованные имена и номера: поток стандартного вывода «stdout» под номером «1», стандартный поток ошибки «stderr» под номером «2» и стандартный поток ввода «stdin» под номером «0». Естественно, ничто не мешает приложению использовать и другие потоки, с более высокими номерами, если они ему потребны.

В данном конкретном случае мы буквально говорим: нужно перенаправить стандартный поток ошибки в пустое устройство, тем самым подавляя вывод на экран любых сообщений об ошибках. Разумеется, если некое приложение не следует стандартам и тупо пишет ошибки и диагностику вместо «stderr» в стандартный поток вывода «stdout» — тут уж ничего не поделаешь.

См. также:
Стандартные потоки — Википедия.
stdin, stdout, stderr
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:38, 06-04-2012 | #13


Ветеран


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

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


Цитата dee.jack:
Файл то открывается, а вот консоль батника не закрывается автоматом, а только после закрытия самого logfile.txt. Пробовал ниже ставить end, exit - не помогает. Может есть такая команда, которая бы закрыла консоль, а logfile.txt оставался бы открытым при этом. »
Код: Выделить весь код
start "" notepad.exe "C:\блабла\блабла\logfile.txt"
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:53, 06-04-2012 | #14


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


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

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


Ребята, еще одна задачка Помогите, плиз.

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

Например, такой файл:
Europe_2_05.2012096.aqua.721.250m.shp
Как имея это имя в переменной %nameforfiles% батнику сказать, что 2012096 - это 5 апреля, 2012097 - соответственно 6 апреля и тд.
Задумка: прочитать имя и переименовать в "05.04.2012 aqua 721" (вместо "aqua" может быть "terra"; а вместо "721" может быть "367").

мой суперкод
Код: Выделить весь код
::расположение папки MODIS
set dir=C:\Users\user\Desktop\MODIS\

::берем имя файла с расширением .shp лежащий рядом
setlocal enableextensions enabledelayedexpansion
for /f "delims=" %%i in ('dir /b /a:-d "%~dp0*.shp" 2^>nul') do if not defined sFile set nameforfiles=%%i
if defined sFile (echo [%nameforfiles%]) else (echo Not found any [*.shp] files)
endlocal

::смотри aqua или terra
echo %nameforfiles%|findstr "aqua"
if errorlevel 1

::::::::::::::тут надо как то хитро переменную %nameforfiles%
::::::::::::::привести к виду "05.04.2012 aqua 721"

ren %dir%new\shape\shape.dbf %nameforfiles%.dbf
ren %dir%new\shape\shape.shp %nameforfiles%.shp
ren %dir%new\shape\shape.shx %nameforfiles%.shx
ren %dir%new\shape\shape.prj %nameforfiles%.prj

move *.xml %dir%new\snimok
move *.aux %dir%new\snimok
move *.jgw %dir%new\snimok
move *.jpg %dir%new\snimok
move *.prj %dir%new\snimok
del /q *.zip
rmdir /s /q %dir%new\other
ren %dir%new %nameforfiles%
rmdir /s /q OK

pause

Отправлено: 10:24, 07-04-2012 | #15


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


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

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


можно как нибудь переменную %DATE% увеличивать и уменьшать?

Отправлено: 15:36, 07-04-2012 | #16


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


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

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


сделал так:

Код: Выделить весь код
echo %nameforfiles%|findstr "aqua"
if "%errorlevel%"=="0" (set sputnik="aqua") else (set sputnik="terra")

echo %nameforfiles%|findstr "721"
if "%errorlevel%"=="0" (set chanel="721") else (set chanel="367")

set dateforrename=%date%

SET /P day=Today? (y/n): 
if "%day%"=="y" (
goto next)
SET /P dateforrename=Enter new date:

буду благодарен, если предложите автоматическое решение

Отправлено: 18:01, 07-04-2012 | #17


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


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

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


Цитата Iska:
@echo off
setlocal enableextensions enabledelayedexpansion
for /f "delims=" %%i in ('dir /b /a:-d "%~dp0*.shp" 2^>nul') do if not defined sFile set sFile=%%i
if defined sFile (echo [%sFile%]) else (echo Not found any [*.shp] files)
endlocal
exit /b »
Интересно, а можно ли сделать подобный поиск файлов на уровень выше каталога самого батника? ..\
В команде выше используется поиск и представление только одного файла.

У меня задачка схожая.
1. Найти файлы с расширением .xyz в директории на один уровень выше батника. ..\
2. В случае отсутсвия таких файлов, можно так же выдать сообщения об их отсутсвии.
3. В случае обнаружения таких файлов открыть их в приложении находящееся в директории батника pack.exe.

Отправлено: 12:34, 08-04-2012 | #18


Ветеран


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

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


dee.jack,
Код: Выделить весь код
@echo off

pushd "%~dp0.."
if not exist *.xyz (

    echo No Files
    popd
    goto:eof

)
for /f "tokens=*" %%i in ('dir /b *.xyz') do start /w "" "%~dp0pack.exe" "%%i"
popd
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:51, 08-04-2012 | #19


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


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

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


Foreigner,
Спасибо, нашёл этому применение с перенаправлением из другого батника посредством call. Ещё бы подобный скрипт был полезен для переменных расширений файлов примерно такого вида .jpg01, .jpg02, .jpg03 и т.д. Интересует как примерно обозначить их в скрипте выше, чтобы также происходило поочерёдное их открытие, и так же не влияло на название файла.


Проблему решил таким способом: *.jpg*

Спасибо.

Последний раз редактировалось dee.jack, 10-04-2012 в 21:12.


Отправлено: 17:22, 10-04-2012 | #20



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - [решено] Архивирование файлов в каталоге Tonny_Bennet Скриптовые языки администрирования Windows 53 11-01-2015 13:11
CMD/BAT - [решено] узнать количество файлов в каталоге через CMD toro Скриптовые языки администрирования Windows 5 04-12-2013 06:31
Прочие - Как вывести список папок и файлов в текстовый файл? Vowan Программное обеспечение Windows 15 23-11-2013 15:29
Разное - [решено] Как получить список файлов находящихся в каталоге? Kocuk Microsoft Windows 2000/XP 8 27-02-2012 23:25
php как вывести список всех файлов в папке E-mail Вебмастеру 6 12-02-2005 17:33




 
Переход