【问题标题】:Wild Cards * in If Else Statements - Batch ScriptingIf Else 语句中的通配符 * - 批处理脚本
【发布时间】:2017-12-06 21:15:11
【问题描述】:

我必须匹配 bat 文件中 else 块中的文件模式。 *abc*20170202*.txt

下面是我需要这个的示例:

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&gt;&gt; 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”?如果是文件名列表,则需要其他内容。
  • 它不是完整的脚本,我已经删除了实际脚本的某些部分,并且只关注我看到问题的部分。 ,实际行是“echo mget abc*20170202.txt>> download.txt”。我只是想找到一种方法来匹配文件列表中的上述模式 abc*20170202.txt
  • *abc*20170202*.txtabc*20170202.txt 应该匹配什么?如果文件abc.txt 不存在,您到底想做什么?请提供完整和正确的答案,并请使用您正在尝试的实际命令编辑问题中的代码,不要用它们代替您认为可能会执行类似操作的代码
  • 我已经用所有脚本编辑了问题,删除了 ip。请提出解决方案,谢谢
  • 请不要将问题编辑到使现有答案无效的程度。编辑后的问题与编辑前的问题完全不同。已撤消编辑。 (而且,我现在必须去“meta.stackoverflow.com”询问在这种情况下该怎么办。)

标签: batch-file wildcard


【解决方案1】:

echo 不像你想象的那样工作。

试试这个:

dir /s/b *abc*20170202*.txt>> download.txt

【讨论】:

  • 它对我有用。我不知道你遇到了什么样的问题。它在if...else... 之外对你有用吗?
  • 更新后的问题是完全不同的问题。
猜你喜欢
  • 2020-08-07
  • 2016-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多