Batch file 搜索部分文件夹名称并返回要与批处理一起使用的目录
首先,我还是一个脚本初学者,所以请温柔一点。 我正在创建一个备份脚本,我希望能够在网络中搜索文件名的一部分(该文件名位于网络外部HDD上以供备份使用),然后返回目录,以便稍后用于备份USB设备的内容。 我正在搜索的文件夹名称由以下4个元素组成:Date-1234567-Type-User。 我要搜索的部分是7位数的id号,它是唯一的,因为其他元素可能会重复多次。 我使用的当前脚本没有返回任何它给出的未找到的文件,有人能告诉我正确的方向吗?我的脚本如下,我也在windows 7上工作Batch file 搜索部分文件夹名称并返回要与批处理一起使用的目录,batch-file,search,directory,find,filepath,Batch File,Search,Directory,Find,Filepath,首先,我还是一个脚本初学者,所以请温柔一点。 我正在创建一个备份脚本,我希望能够在网络中搜索文件名的一部分(该文件名位于网络外部HDD上以供备份使用),然后返回目录,以便稍后用于备份USB设备的内容。 我正在搜索的文件夹名称由以下4个元素组成:Date-1234567-Type-User。 我要搜索的部分是7位数的id号,它是唯一的,因为其他元素可能会重复多次。 我使用的当前脚本没有返回任何它给出的未找到的文件,有人能告诉我正确的方向吗?我的脚本如下,我也在windows 7上工作 @echo
@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行自行创建一个新文件夹并复制内容,但是我必须手动编写完整的文件路径,这是非常广泛和费力的,因此,如果我能够自动完成这项工作,它将大有帮助。
我提前感谢你们的帮助,我已经在谷歌上搜索了我的心,但正如我所说,我是一个初学者,我的大脑正在融化。
谢谢大家
for /f "delims=" %A in ('dir /ad /b /s z:\*1234567*') do echo %A
这应该会找到它。您是否试图在循环外部访问变量
%%p
的?这是不可能的;您需要将其分配给一个标准变量,如设置“VAR=%%~p”
,并对剩余的代码使用%VAR%
。。。您需要将“
放在整个路径的周围,而不是每个目录的周围,比如%VAR%\usb-download”
而不是%VAR%“\“usb-download”
…变量p
来自哪里?在if defined p
和echo%p%
等中使用,但我找不到类似set p=%%~p的东西。顺便说一句,不要更改变量path
,它有自己的路径,不要将path用作变量。windows使用它查找程序。当cmd提示符打开时,您中断了它。因此,我使用了“Var”而不是“path”,在哪里设置变量?我试图实现的是返回包含网络驱动器中变量的文件的完整文件路径。i、 e试图返回名为“01012001-1234567-TEST-DAVE”的文件的文件路径。我要搜索的用户可定义变量是“1234567”,我想从网络位置“\\NAS-DRIVE\Public\Backup Area”找到它。我上面所做的是玩从各种google搜索中找到的代码。。。我不会说谎的。我只懂一些代码。我真的很挣扎。。。请帮助…在我为/f“delims=“%%A in ect…”使用了一个额外的%%
之后,这就起作用了