Как написать пакетный сценарий для изменения каталога в папку WILDCARD на основе ввода пользователя, чтобы скопировать - PullRequest
0 голосов
/ 17 ноября 2011

Я хочу иметь возможность скопировать ZIP-файл из папки, которая будет находиться на рабочем столе. Папка будет иметь другое имя каждую неделю. Мы обработаем его и удалим. Я хочу иметь возможность использовать пользовательский ввод, чтобы найти любую папку на моем рабочем столе, в которой есть это имя. Найдя, я хочу иметь возможность зайти в эту папку и скопировать находящийся там zip-файл в папку с именем PROCESSED LINKFILES. Вот сценарий. Первая часть работает нормально, но я не могу получить пользовательский ввод, чтобы найти правильную папку с помощью функции подстановки *. Пожалуйста, помогите:

usermessage.vbs

ECHO WScript.Echo InputBox( "Please Enter the name of the store", "Store Name", "" )
FOR /F "tokens=*" %%A IN ('CSCRIPT.EXE //NoLogo usermessage.vbs') DO SET StoreName=%%A
ECHO Store Name is %StoreName%
DEL usermessage.vbs


copy C:\Users\ADMINISTRATOR\Desktop\*%StoreName%*\*.zip C:\Users\ADMINISTRATOR\Desktop\PROCESSED_LINKFILES

1 Ответ

0 голосов
/ 17 ноября 2011

прочитайте HELP FOR и попробуйте в командной строке этот двойной FOR цикл

for /d %d in (\temp\f*) do @for %f in (%d\f*) do @echo %f

Как вы видите, он будет зацикливаться на всех папках f * и для каждой из них if будет циклически перебирать все файлы f *.

Итак, адаптируя эту простую стратегию к вашим требованиям и придавая ей подходящий синтаксис BAT, вы можете попробовать это ...

@echo off
set storename=%1
set myfolder=C:\Users\ADMINISTRATOR\Desktop\
set dstfolder=%myfolder%\PROCESSED_FILES
set myfiles=*.zip
for /d %%d in (%myfolder%\*%storename%*) do (
  for %%f in (%%d\%myfiles%) do (
    echo copy %%f %dstfolder%
  )
)

тщательно проверьте перед удалением ECHO

...