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

HKEY_CLASSES_ROOT\*\shell

Cmd.exe /c ren %1 "sample".*

Однако я не мог найти, как это сделать с текущей датой. Кто-нибудь может помочь?

1 ответ1

0

Чтобы получить текущую дату в командной строке Windows, используйте следующее:

date /t

Чтобы переименовать файл с текущей датой, вам нужно использовать конструкцию for чтобы получить выходные данные команды date и передать ее в ren:

for /f "useback delims=" %x in (`date /t`) do ren oldfile.foo %x

Обратите внимание, что вывод date может, в зависимости от ваших региональных настроек, содержать символы, которые нельзя использовать в имени файла, например косую черту (/). Если это так, у вас есть два варианта:

  • Отформатируйте дату так, чтобы она подходила для использования в имени файла; см. этот пост в переполнении стека.

  • Вместо этого используйте PowerShell. Следующее должно сделать трюк:

    Rename-Item oldfile.foo (Get-Date -Format yyyy-MM-dd)
    

    В этом примере используется формат даты ISO. См. Форматирование даты и времени для получения дополнительной информации.


Чтобы добавить новую запись в контекстное меню для всех файлов, выполните следующие действия:

  1. Откройте regedit.exe и перейдите к HKEY_CLASSES_ROOT\*\shell

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

  3. Добавьте новый ключ под этим, с именем команды

  4. Дважды щелкните значение (по умолчанию) под ключом команды и установите его значение следующим образом:

    • если используется обычная командная строка (обратите внимание на знаки двойного процента):

      cmd /c for /f "useback delims=" %%x in (`date /t`) do ren "%1" %%x
      
    • при использовании PowerShell:

      cmd /c powershell Rename-Item "%1" (Get-Date -Format yyyy-MM-dd)
      

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .