Скрипт для створення папок у декількох каталогах, використовуючи дату YYYYMMDD як ім'я папки


6

На роботі щоранку мені доводиться створювати кілька файлових папок (за допомогою a YYYYMMDD формату дати як ім'я папки файлу) в різних каталогах по всій мережі для різних відділів. Це справжній біль і спокушаючий час, і я хотів би автоматизувати цей процес. Тому моє запитання:

Хто-небудь знає, як я можу написати сценарій, який використовує поточну дату системи YYYYMMDD форматі та створює кілька папок у різних мережевих каталогах з кожною папкою, названою датою в YYYYMMDD формат?

Заздалегідь вдячні за відповіді.


1
улюблений: командний рядок Windows не DOS. DOS - це 16-бітна операційна система, яка в основному мертва. Я повторно помітив це питання, щоб відобразити це.
RBerteig

1
Пілот літає і втрачається в тумані. Він мало палива і його пасажири нервують. Нарешті він бачить високу будівлю з одним хлопцем, який працює на 5-му поверсі. Пілот банку і кричить через відкрите вікно: "Гей, де я?". Працівник офісу відповідає: "Ви на літаку". Відповідь хлопця в будівлі дав пілоту 100% правильно, але абсолютно марно. Хоча ви абсолютно праві, що командний рядок не DOS, це те, що розуміють більшість людей. Мої 2 центи: ми повинні зосередитися на тому, щоб зробити речі доступними / пошуковими - навіть якщо вони не на 100% правильно позначені.
Vinayak

1
@Vinayak Якщо ви дійсно мали питання про DOS, ви б хотіли просіювати через теми, які були 95% про Windows?
coneslayer

Відповіді:


9

Створіть пакетний файл, який виглядає так:

@echo off
for /F "tokens=2-4 delims=/ " %%i in ('date /t') do set yyyymmdd=%%k%%j%%i
echo Date: %yyyymmdd%

mkdir \\server1\share1\subdir1\%yyyymmdd%
mkdir \\server1\share2\subdir2\%yyyymmdd%
mkdir \\server2\share3\subdir3\%yyyymmdd%
...

Увага : формат дати ( yyyymmdd = %% k %% j %% i ) залежить від регіональних налаштувань. Тому що я використовую французький формат дати (дд / мм / рррр), я повинен використовувати " %% k %% j %% i "як формат (%% i = день, %% j = місяць, %% j = рік).

Якщо для регіональних налаштувань встановлено стиль США (мм / дд / рік), слід використовувати " %% k %% i %% j "(%% i = місяць, %% j = день, %% j = рік).


Якщо ви бажаєте також включити час, використовуйте це:

@echo off
for /F "tokens=2-4 delims=/ " %%i in ('date /t') do set yyyymmdd=%%k%%j%%i
echo Date: %yyyymmdd%
for /F "tokens=1-3 delims=: " %%i in ('echo %time%') do set hhmmss=%%i%%j%%k
echo Time: %hhmmss%

mkdir \\server1\share1\subdir1\%yyyymmdd%%hhmmss%

Дата зберігається у змінній %yyyymmdd%, час у %hhmmss% . Те ж саме зауваження, що й вище для дати, не застосовується для часу.

Між датою й часом можна використовувати роздільник: %yyyymmdd%_%hhmmss% наприклад.


не могли б ви показати приклад, включаючи час?
Mark Norgren

1
@marked: оновив мою відповідь на прикладі, включаючи час
Snark

0

Іншим, більш уродливим, але набагато більш гнучким способом, є генерування окремого пакетного файлу для кожного каталогу, який потрібно створити, що (a) створює каталог і (b) перейменує наступний пакетний файл, який необхідно виконати до раніше вибраного звичайне ім'я. Ви просто запускаєте пакетний файл з таким загальним ім'ям щодня


0

Спробуйте такі параметри:

set name=%date%
set name2=%name:~6,4%-%name:~3,2%-%name:~0,2%
set tm=%time%
set name3=%tm:~0,2%-%tm:~3,2%
set finname=%name2%_%name3%
mkdir \\Server\Share1\Subfolder1\%finname%

У випадку, якщо я хочу зробити те ж саме для всіх робочих днів місяця (наприклад, скажімо, на місяць з травня 2018 року, я хочу створити всі папки на 01 травня, потім 02 травня і так далі, і так далі - 20180501, 20180502, 20180503 ....). то як я можу повторити це ?, будь-які пропозиції вітаються.
tush1r
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.