CMD/BAT - Удаление файлов по списку

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

CMD/BAT - Удаление файлов по списку

Сообщение Freddy1984 »

Здравствуйте! Прошу помощи.



For /f "tokens=*" %%i in (list.txt) do attrib -a %%i

attrib -a %0



Исходя из данного скрипта, список удаляемых слов/строк должен находится в файле "list.txt"



Вопрос: а как сделать так, что бы список слов/строк можно было прописать в самом скрипте, а не ссылаясь на отдельный файл со списком на удаление строк из "list.txt"?



Спасибо.
Аватара пользователя
Busla

Re: CMD/BAT - Удаление файлов по списку

Сообщение Busla »

пропишите в начале скрипта закомментированный список файлов и ссылайтесь на сам скрипт
Аватара пользователя
alpap

Re: CMD/BAT - Удаление файлов по списку

Сообщение alpap »

а как вам такой винегрет?

в переменной %teg% вид тега, разделяющего блоки, в переменной %sn% - номер нужного блока, если номер не указать (оставить эту переменную пустой), будет выведен последний блок, спецсимволов не боится.

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

@echo off
set "teg=---"& set "sn=3"
setlocal enabledelayedexpansion
<"%~f0" (for /f "skip=1 delims=[]" %%a in ('find /n /v ""^|findstr/lc:"%teg%"') do @set/a n+=1, n_=n-1, sn_=sn+1& set "N!n!=%%a")
if "%sn%"=="" (set/a nd=N%n_%+1, kd=N%n%-1) else (set/a nd=N%sn%+1, kd=N%sn_%-1)
setlocal disabledelayedexpansion
<"%~f0" (for /f "delims=" %%a in ('"for /l %%a in (%nd%,1,%kd%) do @find /n /v ""|find "[%%a]""') do @set "s=%%a"& cmd/v/c echo[!s:*]^^=!)
pause& exit
:: Список блоков
------------------
C:\papka\file1.txt
C:\papka\file2.txt
C:\papka\file3.txt
------------------
C:\papka\file1.cmd
C:\papka\file2.cmd
C:\papka\file3.cmd
------------------
C:\papka\file1.bat
C:\papka\file2.bat
C:\papka\file3.bat
------------------
C:\papka\file1.exe
C:\papka\file2.exe
C:\papka\file3.exe
------------------
Аватара пользователя
Busla

Re: CMD/BAT - Удаление файлов по списку

Сообщение Busla »

megaloman, Цитата megaloman:

При развитии скрипта, если у Вас возникнет необходимость, список файлов должен быть после всего кода.
CMD/BAT - Удаление файлов по списку


это не обязательно - развивать можно например так:

Код:

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

@ECHO OFF
SET "BEGIN_MARKER=:ENDFILE1"
SET "END_MARKER=:ENDFILE2"
FOR /F "usebackq tokens=1 delims=:" %%a IN (`FINDSTR /N /B /C:"%BEGIN_MARKER%" "%~0"`) DO SET "SKIP_LINE=%%a"
CALL :WORK "%SKIP_LINE%" "%END_MARKER%" "%~0"
GOTO :EOF
:WORK
FOR /F "usebackq skip=%~1 tokens=1 eol=; delims=" %%a IN (`TYPE "%~3"`) DO IF NOT "%%a"=="%~2" (ECHO %%a) ELSE (GOTO :EOF)
GOTO :EOF
:ENDFILE1
;1
2
3
4
5
:ENDFILE2
6
7
8

При этом считывание строк производится от метки до метки - ну или до конца файла - при отсутствии маркера конца чтения...
Аватара пользователя
y--

Re: CMD/BAT - Удаление файлов по списку

Сообщение y-- »

Вообще, крайне желательно не использовать подобный подход. Должно быть: мухи отдельно, котлеты отдельно код отдельно, данные отдельно.
Аватара пользователя
Iska

Re: CMD/BAT - Удаление файлов по списку

Сообщение Iska »

Вообще, крайне желательно не использовать подобный подход. Должно быть: мухи отдельно, котлеты отдельно код отдельно, данные отдельно.
Аватара пользователя
Iska

Re: CMD/BAT - Удаление файлов по списку

Сообщение Iska »

Iska,
Цитата М.Жванецкий:



Надо, чтобы вы руководили принципами, а не принципы вами.



Главное - логика ситуации. Иметь 2 файла это часто неудобно. Кстати, MS SQL Server, в базе - и данные, и процедуры для их обработки.
Аватара пользователя
Iska

Re: CMD/BAT - Удаление файлов по списку

Сообщение Iska »

Iska,


Цитата Iska:



Когда Вам понадобятся разные наборы данных — порочность подхода сразу становится видна.
CMD/BAT - Удаление файлов по списку




в приведенном мною примере уже сразу заложена возможность использовать произвольное количество наборов (однородных в пределах набора) данных...




Цитата Iska:



И там — таблицы отдельно, запросы отдельно.
CMD/BAT - Удаление файлов по списку




запросы??? Сторки, функции, типы пользовательких данных, вьюхи - и это все прям отдельно? Да у вас, батенька, винегрет не перемешан Изображение
Аватара пользователя
y--

Re: CMD/BAT - Удаление файлов по списку

Сообщение y-- »

Цитата y--:



в приведенном мною примере уже сразу заложена возможность использовать произвольное количество наборов (однородных в пределах набора) данных...
CMD/BAT - Удаление файлов по списку




Повторяю: идея порочна по сути. Вы предлагаете жить с заранее и строго предопределёнными наборами данных.




Цитата y--:



запросы??? Сторки, функции, типы пользовательких данных, вьюхи - и это все прям отдельно? Да у вас, батенька, винегрет не перемешан
CMD/BAT - Удаление файлов по списку




Смешались в кучу кони, люди. y--, не натягивайте сову на глобус.
Аватара пользователя
Iska

Re: CMD/BAT - Удаление файлов по списку

Сообщение Iska »

Цитата Iska:



код отдельно, данные отдельно.
CMD/BAT - Удаление файлов по списку




скрипты обычно и делают для частных задач, реализовывать общее решение часто и избыточно и нерационально

в общем-то от этого (преждевременной оптимизации и заделов на будещее масштабирование) часто предостерегают и при обычной разработке ПО



ну а конкретно такой подход чуть ли не Best Practice - exe файлы в основном для этого и придумали, чтобы впихать туда помимо кода ещё и ресурсы. Тут всё красивенько - не захардкодено, а отдельным списком
Ответить

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