#windows #batch-file #echo #windows-server-2012-r2
#Windows #пакетный файл #echo #windows-server-2012-r2
Вопрос:
Моя ОС — Windows
Мой файл:
FILENAME DATECREATED
Jack.txt 3 AM
John.txt 4 AM
Mary.txt 5 AM
Paul.txt 1 AM
Итак, как автоматически переименовывать файлы в массовом порядке сортировка по дате, созданная с помощью этого шаблона:
Ожидаемый результат:
FILENAME DATECREATED
1. Paul.txt 1 AM
2. Jack.txt 3 AM
3. John.txt 4 AM
4. Mary.txt 5 AM
- Paul.txt заменяется на «1. Paul.txt » потому что этот файл создается первым
(в 1 час ночи). - Mary.txt заменяется на «4. Mary.txt » потому что этот файл создается последним (в 5 утра)
Я слышал, что для этой проблемы есть некоторые сценарии, но я тоже не уверен
Любая помощь будет оценена
Спасибо
Ответ №1:
сначала расположите файлы в правильном порядке ( /od
сортирует по дате / времени, /a-d
исключает имена папок, /b
перечисляет только имена файлов. dir /?
Подробнее см.).
Затем пронумеруйте их (подключив к findstr /N
. findstr /?
Подробнее см.).
Затем используйте for /f
цикл, чтобы разделить выходные данные на число и имя файла и собрать их в соответствии с вашими потребностями ( for /?
подробнее см.)
@echo off
for /f "tokens=1,* delims=:" %%a in ('dir /od /a-d /b ^|findstr /N "^"') do ECHO ren "%%b" "%%a. %%b"
ПРИМЕЧАНИЕ: я «отключил» ren
команду, просто повторив ее. Когда результат вас удовлетворит, просто удалите ECHO
.
Комментарии:
1. Большое вам спасибо, я попробовал, и это сработало, НО … результат обратный, самый старый — последний, а не первый Paul.txt заменяется на «4. Paul.txt » вместо «1. Paul.txt » К счастью, ты говоришь мне, чтобы я увидел реж /? для получения подробной информации я запустил dir /? и нашел ответ, что dir / o-d должен быть только dir / od, но спасибо за хорошие ответы 🙂
Ответ №2:
Спасибо Стефану за просвещение
Это пакетный скрипт для решения этой проблемы,
@echo off
for /f "tokens=1,* delims=:" %%a in ('dir /od /a-d /b ^|findstr /N "^"') do ren "%%b" "%%a. %%b"