2016-04-11 3 views
1

Во-первых, я все еще новичок в написании сценариев, поэтому, пожалуйста, будьте осторожны. Я создаю резервный скрипт, и я хочу, чтобы иметь возможность искать сеть для части имени файла (которая находится на сетевом внешнем жестком диске для использования в резервном режиме), а затем вернуть каталог, который будет использоваться позже, для резервного копирования содержимого USB-устройство. Имя папки, которую я ищу, состоит из 4 элементов: Date-1234567-Type-User. Часть, которую я ищу для поиска, представляет собой 7-значный номер идентификатора, который уникален, поскольку другие элементы могут дублироваться несколько раз. текущий скрипт я использую это ничего она дает файл не найден, не возвращая, кто-то может мне точку в правильном направлении, мой скрипт следующим образом, и я работаю над окнами 7.поиск частичного имени папки и возвращаемого каталога для использования с пакетом

@echo off 
:start 

set /p path=enter id no.: 
for /r %%# in (.) do (
     Echo %%~nx# | find "string" "%path%" 1>NUL && (
       Echo Full Path: %%~nx# 
       Echo Filename : %%~nx# 
       Echo Directory: %%~p# 
     ) 
) 

if defined p (
echo %p% 
) else (Echo file not found 
) 
pause 
goto backup 

:backup 
if not exist "%p%"\"usb download" md "%p%"\"usb download" 

if exist (
xcopy /y "USB" "%p%"\usb download 
) 

pause 
goto start 

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

+1

Вы пытаетесь получить доступ к переменной 'for'' %% p' вне цикла? это невозможно; вам нужно назначить его стандартной переменной типа 'set 'VAR = %% ~ p" 'и использовать'% VAR% 'для оставшегося кода ... и вам нужно поместить' '' 'вокруг всех путей, а не вокруг каждого каталога, например '%% VAR% \ usb download" 'вместо'%% VAR% "\" usb download "' ... – aschipfl

+1

Откуда возникает переменная 'p'? Используется в 'if defined p' и в' echo% p% 'и т. Д., Но я не могу найти ничего подобного' set p = %% ~ p # '. BTW, не изменяйте переменную 'path', у нее есть свое [специальное значение] (http://ss64.com/nt/path.html) – JosefZ

+0

Не используйте путь как переменную. Он используется окнами для поиска программ. Вы нарушаете подсказку cmd, пока она открыта. –

ответ

2
for /f "delims=" %A in ('dir /ad /b /s z:\*1234567*') do echo %A 

Это должно найти его.

+1

Это сработало после того, как я использовал дополнительный '%' следующим образом: 'for/f 'delims =" %% A in ect ... ' – PBlank22