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

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

Ответить
Настройки темы
CMD/BAT - создание txt файлов по маске *_i.ext

Старожил


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

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


Изменения
Автор: shadowbat
Дата: 03-01-2015
Здравствуйте!
подскажите как создать пустые txt файлы
пользователем задается например i1 = 0, i2 = 2
маска в виде "_i.Extension"
и батник должен создать все недостающие файлы в папке с хвостиком от 0 до 2

Отправлено: 19:08, 03-01-2015

 

Старожил


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

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


блок схема под спойлером:
цветным фоном показаны циклы (в данном случае два)
Скрытый текст

Отправлено: 09:49, 04-01-2015 | #2



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

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


Ветеран


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

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


Приблизительно:
Код: Выделить весь код
@echo off
setlocal

pushd d:\test

set a=0
set z=3

for /f "tokens=*" %%i in ('dir /b /a-d') do call:1 "%%i"

popd
goto:eof

:1

for /f "tokens=1 delims=_" %%i in ("%~n1") do (

	for /l %%j in (%a%,1,%z%) do (

		if not exist "%%i_%%j.*" cd.>"%%i_%%j.txt"

))
В файлах в папке d:\test не должно быть более одного "_" (перед номером). Иначе это потребует дополнительной проверки
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:23, 04-01-2015 | #3


Старожил


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

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


спасибо
Цитата:
не должно быть более одного "_" (перед номером)
если есть Fi_1le_0.jpg, то создаются файлы Fi_0.txt Fi_1.txt Fi_2.txt
таким образом решение как бы рабочее, но на практике, когда файлов много и нельзя контролировать их названия, то как добавить в bat файл эту самую дополнительную проверку или работу именно с последним символом в имени файла согласно блок схеме?

в принципе можно не делать проверку на "_символ.расширение", а работать сразу напрямую с последним символом перед расширением.
приняв за правило, что все файлы имеют число на конце
например есть файл File1.jpg - и создать файлы File0.txt и File2.txt

Последний раз редактировалось shadowbat, 04-01-2015 в 10:57.


Отправлено: 10:46, 04-01-2015 | #4


Ветеран


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

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


shadowbat, Вот такая портянка:
читать дальше »

Код: Выделить весь код
@echo off
setlocal

pushd d:\test

set "a=0"
set "z=3"

for /f "tokens=*" %%i in ('dir /b /a-d') do call:1 "%%i"

popd
goto:eof

:1

set "t="
set "check=0"

set "f=%~n1"
set "f=%f: =?%"
set "f=%f:,=:%"

for %%i in (%f:_=,%) do set /a t+=1

for /f "tokens=%t% delims=_" %%i in ("%~n1") do (
    
    set "last=%%i"
    
    if not %%i==0 (
    
        for /f %%j in ('set /a %%i-1') do set "check=%%j"

))

if not "%check%"=="-1" (call:2 %1) else (call:3 %1)

goto:eof

:2
setlocal enabledelayedexpansion

set "remove=%last%%~x1"
set "name=%~1"

for /l %%i in (%a%,1,%z%) do (

    if not exist "!name:%remove%=!%%i.*" cd.>"!name:%remove%=!%%i.txt"
    
)

endlocal
goto:eof

:3

if not exist "%~n1_%a%%~x1" ren %1 "%~n1_%a%%~x1"

for /l %%i in (%a%,1,%z%) do (

    if not exist "%~n1_%%i.*" cd.>"%~n1_%%i.txt"
    
)
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:23, 04-01-2015 | #5


Старожил


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

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


не работает если пробел в имени файла
файл Fi le_0.png
создаются Fi le_0.png2.txt и Fi le_0.png3.txt

может быть поможет подобная тема, в которой найдено решение на второй стр . (работает и с пробелами в имени файла и с несколькими "_" например Fi_1le_0.jpg)

Последний раз редактировалось shadowbat, 04-01-2015 в 20:31.


Отправлено: 14:55, 04-01-2015 | #6


Старожил


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

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


значит файлы с пробелами в имени никак не будут работать?
так то портянка хорошая, рабочая

Последний раз редактировалось shadowbat, 11-01-2015 в 12:37.


Отправлено: 12:26, 11-01-2015 | #7


Ветеран


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

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


Я уже если честно потерял ход мыслей на эту тему
Попробуйте такой вариант. Будет создавать нулевые файлы по порядку без сортировки по расширениям.
Код: Выделить весь код
@echo off
setlocal

pushd d:\test

set "a=0"
set "z=5"

for /f "tokens=*" %%i in ('dir /b') do call:1 "%%i"
popd
goto:eof

:1
for /f "tokens=*" %%i in ('dir /b "%~n1.*"') do (

	for /l %%j in (%a%,1,%z%) do (
	
		if not exist "%~n1_%%j.*" cd.>"%~n1_%%j%~x1"
		
))
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:30, 11-01-2015 | #8


Старожил


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

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


кто-то отметил тему решенной? я не отмечал. код выше (третий) просто создаёт 5 файлов без фильтрации т.е. совсем не то,что нужно. код портянка (второй) работает как надо, но не учитывает пробелов

Последний раз редактировалось shadowbat, 13-01-2015 в 12:25.


Отправлено: 09:52, 13-01-2015 | #9



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - скрипт по копирвоанию и последующего удаления файлов по маске названия файла santey007 Скриптовые языки администрирования Windows 19 22-12-2015 10:43
CMD/BAT - Поиск файлов по маске на удаленных машинах по словарю с выгрузкой в *.txt gremlintv2 Скриптовые языки администрирования Windows 3 09-12-2013 04:46
CMD/BAT - Удаление файлов по маске IlyaBarkov Скриптовые языки администрирования Windows 6 15-10-2013 05:03
CMD/BAT - Перемещение файлов по маске SanyaJoker Скриптовые языки администрирования Windows 0 17-11-2011 12:54
CMD/BAT - розархивация файлов по маске с архива отсортированого по датах VitHAK Скриптовые языки администрирования Windows 1 28-12-2009 11:07




 
Переход