1

Тема: автоматичне створення нових імен файлів при їх зберіганні. Бат файли

Вміст бат файлу такий:

for /l %%i in (1,1,10) do(
tasklist > F:\hej.txt
)

Треба, щоб файли, які зберігаються в цьому циклі, накопичувались, а не перезаписувались. Тобто з кожним кроком в циклі міняти назву файлу hej.txt на щось інше, яке не співпадає з попередніми. Ідею то знаю, але реалізувати хард. Буду радий глянути ваш код

2 Востаннє редагувалося Raikoho (06.12.2019 22:04:30)

Re: автоматичне створення нових імен файлів при їх зберіганні. Бат файли

До речі, бажано, щоб і при наступному запуску файли не повторювались.. Я думав зробити їх назву як нинішню дату і час

3

Re: автоматичне створення нових імен файлів при їх зберіганні. Бат файли

а чому не зробили?

4

Re: автоматичне створення нових імен файлів при їх зберіганні. Бат файли

Djalin написав:

а чому не зробили?

Ось до чого я дійшов.

set datetemp=%time /T:~-10%
@echo .>F:\viRUSSHE\%datetemp%.txt

З датою працює, а з + часом ні

5

Re: автоматичне створення нових імен файлів при їх зберіганні. Бат файли

Raikoho написав:

Вміст бат файлу такий:

for /l %%i in (1,1,10) do(
tasklist > F:\hej.txt
)

Треба, щоб файли, які зберігаються в цьому циклі, накопичувались, а не перезаписувались.

ну, Ви не написали, яка ОС, тому буду ввважати що це MS DOS або щось, що з нього виросло

command >> filename       APPEND into a file

https://ss64.com/nt/syntax-redirection.html

Подякували: leofun011

6 Востаннє редагувалося Raikoho (06.12.2019 22:19:06)

Re: автоматичне створення нових імен файлів при їх зберіганні. Бат файли

ping написав:
Raikoho написав:

Вміст бат файлу такий:

for /l %%i in (1,1,10) do(
tasklist > F:\hej.txt
)

Треба, щоб файли, які зберігаються в цьому циклі, накопичувались, а не перезаписувались.

ну, Ви не написали, яка ОС, тому буду ввважати що це MS DOS або щось, що з нього виросло

command >> filename       APPEND into a file

https://ss64.com/nt/syntax-redirection.html

Віндовс 7 ос. Ви скинули взагалі не те, що було сказано в запитанні. Мені треба не додати, а створювати нові файли

7

Re: автоматичне створення нових імен файлів при їх зберіганні. Бат файли

Raikoho написав:
ping написав:
Raikoho написав:

Вміст бат файлу такий:

for /l %%i in (1,1,10) do(
tasklist > F:\hej.txt
)

Треба, щоб файли, які зберігаються в цьому циклі, накопичувались, а не перезаписувались.

ну, Ви не написали, яка ОС, тому буду ввважати що це MS DOS або щось, що з нього виросло

command >> filename       APPEND into a file

https://ss64.com/nt/syntax-redirection.html

Віндовс 7 ос. Ви скинули взагалі не те, що було сказано в запитанні. Мені треба не додати, а створювати нові файли

сорі, не вірно зрозумів.
Ви хочете тримати весь список файлів у тілі циклу?

8 Востаннє редагувалося Raikoho (06.12.2019 22:26:00)

Re: автоматичне створення нових імен файлів при їх зберіганні. Бат файли

ping написав:
Raikoho написав:
ping написав:

ну, Ви не написали, яка ОС, тому буду ввважати що це MS DOS або щось, що з нього виросло

command >> filename       APPEND into a file

https://ss64.com/nt/syntax-redirection.html

Віндовс 7 ос. Ви скинули взагалі не те, що було сказано в запитанні. Мені треба не додати, а створювати нові файли

сорі, не вірно зрозумів.
Ви хочете тримати весь список файлів у тілі циклу?

Не обов'язково тримати. Просто зберегти один, зберегти далі другий, потім третій і т.д

9 Востаннє редагувалося Raikoho (06.12.2019 22:28:46)

Re: автоматичне створення нових імен файлів при їх зберіганні. Бат файли

було б ідеально в назві прописати дата+час. Для дати підходить це

set datetemp=%date:~-10%
@echo .>%SYSTEMDRIVE%\%DATETEMP%.txt

Але ще би час сюди вліпити, який прописаний до секунд...

10 Востаннє редагувалося P.Y. (07.12.2019 00:18:53)

Re: автоматичне створення нових імен файлів при їх зберіганні. Бат файли

Raikoho написав:

Вміст бат файлу такий:

for /l %%i in (1,1,10) do(
tasklist > F:\hej.txt
)

Треба, щоб файли, які зберігаються в цьому циклі, накопичувались, а не перезаписувались. Тобто з кожним кроком в циклі міняти назву файлу hej.txt на щось інше, яке не співпадає з попередніми. Ідею то знаю, але реалізувати хард. Буду радий глянути ваш код

А чому б не підставити саму змінну-лічильник в ім'я, що генерується?

for /l %%i in (1,1,10) do(
tasklist > F:\hej%%i.txt
)

В результаті, отримаєте файли hej1.txt, hej2.txt і т.д.

Потім, можна генерувати випадкове число (яке з досить великою ймовірністю буде унікальним) з допомогою системної змінної %random% — проте, слід пам'ятати, що всі підстановки змінних (крім лічильників) у тіло циклу відбуваються разово перед його виконанням, тому, якщо треба, щоб цикл щоразу генерував десять файлів з унікальними іменами, то слід включити в ім'я і лічильник (інакше цикл перезапише десять разів один і той же файл):

for /l %%i in (1,1,10) do(
tasklist > F:\hej%random%_%%i.txt
)

Про змінні %date% й %time% вже писали вище. З %time% без додаткових дій нічого не вийде: в ній години, хвилини й секунди розділяються двокрапками, які в іменах файлів заборонені. Гадаю, простіше буде поєднати %date%, %random% і лічильник. Втім, якщо скрипт запускається десятки тисяч разів на добу, цей варіант не годиться (%random% дає випадкове ціле число в межах 2¹⁶).

Подякували: Raikoho1

11

Re: автоматичне створення нових імен файлів при їх зберіганні. Бат файли

P.Y. написав:
Raikoho написав:

Вміст бат файлу такий:

for /l %%i in (1,1,10) do(
tasklist > F:\hej.txt
)

Треба, щоб файли, які зберігаються в цьому циклі, накопичувались, а не перезаписувались. Тобто з кожним кроком в циклі міняти назву файлу hej.txt на щось інше, яке не співпадає з попередніми. Ідею то знаю, але реалізувати хард. Буду радий глянути ваш код

А чому б не підставити саму змінну-лічильник в ім'я, що генерується?

for /l %%i in (1,1,10) do(
tasklist > F:\hej%%i.txt
)

В результаті, отримаєте файли hej1.txt, hej2.txt і т.д.

Потім, можна генерувати випадкове число (яке з досить великою ймовірністю буде унікальним) з допомогою системної змінної %random% — проте, слід пам'ятати, що всі підстановки змінних (крім лічильників) у тіло циклу відбуваються разово перед його виконанням, тому, якщо треба, щоб цикл щоразу генерував десять файлів з унікальними іменами, то слід включити в ім'я і лічильник (інакше цикл перезапише десять разів один і той же файл):

for /l %%i in (1,1,10) do(
tasklist > F:\hej%random%_%%i.txt
)

Про змінні %date% й %time% вже писали вище. З %time% без додаткових дій нічого не вийде: в ній години, хвилини й секунди розділяються двокрапками, які в іменах файлів заборонені. Гадаю, простіше буде поєднати %date%, %random% і лічильник. Втім, якщо скрипт запускається десятки тисяч разів на добу, цей варіант не годиться (%random% дає випадкове ціле число в межах 2¹⁶).

Шик. Дякую за суперрозгорнуту відповідь

12

Re: автоматичне створення нових імен файлів при їх зберіганні. Бат файли

Взагалі-то, можна підставити й час — прибрати двокрапки простіше, ніж я думав. Замість %time% пишемо %time::=_% — двокрапки буде замінено підкресленнями. Або ще почитайте довідку про змінні середовища (просто наберіть у консолі set /? ) — можливо, ще щось корисне побачите.

Подякували: leofun011