FTP 服务器目录包含一组名称与模式匹配的文件
prefix_suffix.txt
此外prefix
,所有文件都相同,但suffix
不同,包括长度(正式地,最大可能长度没有限制)。
suffix
任务是删除所有文件,长度为 1 个字符的文件除外。该操作必须通过操作系统的标准方式从 BAT/CMD 文件执行。
问题是否可以通过标准 Windows 客户端 FTP.exe(或其他标准操作系统工具)中可用的标准工具/命令在非交互模式下解决?
目前,使用以下技巧 - 使用控制文件启动 FTP.EXE,其中,在建立连接后,首先将指定的文件复制到自己(通过 mask prefix_?.txt
),然后全部删除,然后是复制的文件被退回。
我想发明一种更优雅的方法。
PS。不考虑使用非标准工具来处理 FTP 以及更高级的脚本工具(VBS / JS / PS)。
问题解决了。执行指示操作的正确命令是:
PS。这种方法只适用于有“赶上”的东西。
根据条件,您需要删除具有 2 个或更多字符的内容 - 正是这个设置令人困惑。事实上,还需要考虑 4 个结束字符,将其视为扩展名。您可以“钩住”他们。例如,如果没有扩展名(即文件与模式匹配
suffix_prefix
),则此方法不适用。但是,如果已知,例如,它prefix
保证包含某个特定的字符或字符组(例如,符号X
),那么问题将通过一对模式prefix_??*X*
+来解决prefix_?X*
,如果这个字符或组在最后,然后按一个模式prefix_??*X
。换句话说,在通配符子组中,
?*
问号字符的工作方式不同,具体取决于在星号之后是否至少有一个非模式字符。如果不是,问号就像“零或一个字符”,但如果是,它就像“严格一个字符”。此行为与 CMD.EXE 命令处理器使用此通配符的方式不同,后者无论如何都使用“零或一个字符”选项 - 至少在 Mikrotik 路由器上的 FTP 服务器上(即在 RouterOS 中)。我假设这对于 *nix-like 操作系统上的所有 FTP 都是正确的,而对于 Windows 下的常规 FTP 服务器则不是这样。