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

Ответить
 • Просмотры: 2
Аватара пользователя
ndvikulov

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

Сообщение ndvikulov »

можно вывести в файл и потом считать



for /f %%i in (file.txt) do (

set VAR = %%i

echo %VAR%

)



но что то как то кривовато. есть изящнее способ?
Аватара пользователя
ndvikulov

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

Сообщение ndvikulov »

DesmondTruman,

Спасибо, особенно за это "chcp 1251" теперь в тексте нормальный шрифт, дело в том, что я находил уже подобный код, и эта проблема сейчас можно сказать решена. Еще после исполнения этих команд я пытаюсь вставить открытие этого тхт в конце исполнения этого батника, довольно простым способом, просто с новой строки путь к файлу тхт.

"C:\блабла\блабла\logfile.txt"

Файл то открывается, а вот консоль батника не закрывается автоматом, а только после закрытия самого logfile.txt. Пробовал ниже ставить end, exit - не помогает. Может есть такая команда, которая бы закрыла консоль, а logfile.txt оставался бы открытым при этом.
Аватара пользователя
ndvikulov

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

Сообщение ndvikulov »

Цитата DesmondTruman:



Для чего служат цифры перед символом перенаправления?
CMD/BAT - [решено] Вывести имена файлов *.txt в каталоге




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



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



См. также:

Стандартные потоки — Википедия
.

stdin, stdout, stderr
Аватара пользователя
dee.jack

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

Сообщение dee.jack »

Цитата dee.jack:



Файл то открывается, а вот консоль батника не закрывается автоматом, а только после закрытия самого logfile.txt. Пробовал ниже ставить end, exit - не помогает. Может есть такая команда, которая бы закрыла консоль, а logfile.txt оставался бы открытым при этом.
CMD/BAT - [решено] Вывести имена файлов *.txt в каталоге






Код:

Код: Выделить всё

start "" notepad.exe "C:\блабла\блабла\logfile.txt"
Аватара пользователя
Iska

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

Сообщение Iska »

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



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



Например, такой файл:

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
Аватара пользователя
Iska

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

Сообщение Iska »

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

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

Сообщение ndvikulov »

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



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



Например, такой файл:

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
Аватара пользователя
ndvikulov

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

Сообщение ndvikulov »

Цитата 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
CMD/BAT - [решено] Вывести имена файлов *.txt в каталоге




Интересно, а можно ли сделать подобный поиск файлов на уровень выше каталога самого батника? ..\

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



У меня задачка схожая.

1. Найти файлы с расширением .xyz в директории на один уровень выше батника. ..\

2. В случае отсутсвия таких файлов, можно так же выдать сообщения об их отсутсвии.

3. В случае обнаружения таких файлов открыть их в приложении находящееся в директории батника pack.exe.
Аватара пользователя
ndvikulov

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

Сообщение ndvikulov »

сделал так:





Код:

Код: Выделить всё

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:



буду благодарен, если предложите автоматическое решение
Аватара пользователя
dee.jack

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

Сообщение dee.jack »

Foreigner,

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





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



Спасибо. Изображение
Ответить

Вернуться в «Скриптовые языки администрирования Windows»