Как закодировать командный файл для копирования и переименования самого последнего датированного файла? - PullRequest
0 голосов
/ 17 июня 2010

Я пытаюсь закодировать пакетный файл, чтобы скопировать только самый последний датированный файл в заданной папке в другой каталог на локальном компьютере, и одновременно переименовать его, как он делает.

Я нашел очень похожий вопрос здесь

Как написать пакетный скрипт Windows для копирования самого нового файла из каталога?

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

Исходная папка - C :! BATCH и папка назначения C: \ DROP

Код ниже, извиняюсь, если это явно очевидный ответ, но это буквально первый набег на кодирование пакетных файлов для меня ... Спасибо!

@echo off

setLocal EnableDelayedExpansion

pushd C:\! BATCH

for /f "tokens=* delims= " %%G in ('dir/b/od') do (set newest=%%G)

copy "!newest!" C:\DROP\

PAUSE

Ответы [ 2 ]

0 голосов
/ 18 июня 2010

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

 @echo on
 setLocal DisableDelayedExpansion
 pushd "C:\! BATCH"
 setLocal EnableDelayedExpansion

 for /f "tokens=* delims= " %%G in ('dir/b/od') do (set newest=%%G)

 copy %newest% C:\DROP\newname.txt

 PAUSE
 POPD

newname.txt ... это новое имя:)

0 голосов
/ 17 июня 2010

Попробуйте переместить команду pushd над командой setLocal.

Я предполагаю, что "!" символ имеет особое значение для отложенного раскрытия, поэтому вы не сможете использовать его как часть имени пути после включения отложенного раскрытия.

Вы также можете удалить восклицательный знак со своего пути, если он вам действительно не нужен, это может быть проще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...