我必须匹配bat文件中else块中的文件模式。 * ABC * 20170202 * .TXT如果其他语句中包含Wild Cards * - 批处理脚本
下面是我需要这样的例子:
IF EXIST abc.txt (
ECHO "abc File exists"
TIMEOUT 5
) else (
echo *abc*20170202*.txt>> download.txt
echo File printed successful..
PAUSE
)
它没有考虑作为*野生字符在这里。 请指导如何可以做到这一点
编辑
下面是我需要这样一个例子:
@ECHO OFF
for /f "tokens=2*" %%a in ('net user "%USERNAME%" /domain ^| find /i "Full Name"') do set DisplayName=%%b
IF EXIST ~%~n0%~x0.loc SET /p dname=<~%~n0%~x0.loc
IF EXIST ~%~n0%~x0.loc (
ECHO *****************************************************
ECHO Script is already running by User : %dname%
ECHO *****************************************************
TIMEOUT 5
) else (
ECHO %DisplayName% > ~%~n0%~x0.loc
echo cd /abcdata/contrl>> download.txt
echo prompt>> download.txt
echo mget *abc*20170202*.txt>> download.txt
echo bye>> download.txt
ftp -s:download.txt xx.xx.xx.xx
REM "Replace xx.xx.xx.xx with a IP address"
del /Q download.txt
echo File downloded successful..
TIMEOUT 5
DEL ~%~n0%~x0.loc
)
在行echo mget *abc*20170202*.txt>> download.txt
并不认为*的狂野性格和相当正常文本。 它应该匹配10个文件,但它不会。
下面是我收到运行此
Connected to xx.xx.xx.xx.
220 (vsFTPd x.x.x)
User (xx.xx.xx.xx:(none)):
331 Please specify the password.
230 Login successful.
ftp> cd /abcdata/contrl
250 Directory successfully changed.
ftp> prompt
Interactive mode Off .
ftp> mget *abc*20170202*.txt
200 Switching to ASCII mode.
ftp> bye
221 Goodbye.
File downloded successful..
Press any key to continue . . .
请指导如何可以做到这一点的日志。
你有什么期望出现内部download.txt?如果它是匹配* abc * .txt的所有文件的内容,请使用“type”而不是“echo”?如果它是一个文件名列表,你需要别的东西。 – lessthanideal
它不是完整的脚本,我已经删除了实际的脚本的一些部分,只集中在我看到问题的一部分。 ,实际的行是“echo mget * abc * 20170202 * .txt >> download.txt”。我只是想找到一种方法来匹配文件列表中的所述模式* abc * 20170202 * .txt –
什么是'* abc * 20170202 * .txt'或'abc * 20170202.txt'应该是匹配的?如果文件'abc.txt'不存在,你究竟想要做什么?请提供完整正确的答案,并请在您的问题中编辑您正在尝试的实际命令中的代码,_不要将它们替换为您认为可能做类似的事情。 – Compo