我是批处理命令的新手,在我尝试通过网络复制时遇到阻止某些文件大小和扩展名的问题。
例如:文件大小>如果有人尝试通过网络或本地复制,则会自动阻止5MB和扩展名* .mp3。
提前谢谢
答案 0 :(得分:0)
您可以使用扩展选项检查某些文件扩展名和大小。
此命令仅允许文件< 5MB且没有扩展mp3
for %f in (*.*) do if /I %~zf LEQ 5000000 if /I "%~xf" NEQ ".mp3" copy %f \\srv\share\%f
在命令提示符下发出help if
会显示可用选项:
如果启用了命令扩展,则IF更改如下:
IF [/I] string1 compare-op string2 command
compare-op可能是以下之一:
EQU - equal
NEQ - not equal
LSS - less than
LEQ - less than or equal
GTR - greater than
GEQ - greater than or equal
和/ I切换,如果指定,则表示不区分大小写的字符串 相比较。 / I开关也可以在string1 == string2表单上使用 IF。这些比较是通用的,因为如果string1和 string2都包含所有数字,然后是字符串 转换为数字并执行数字比较。
for命令允许迭代目录中的每个文件:
为一组文件中的每个文件运行指定的命令
FOR %variable IN (set) DO command [command-parameters]
%variable Specifies a single letter replaceable parameter.
(set) Specifies a set of one or more files. Wildcards may be used
command Specifies the command to carry out for each file.
command-parameters
Specifies parameters or switches for the specified command.
要在批处理程序中使用FOR命令,请改为指定%%变量 %变量。变量名称区分大小写,因此%i不同 来自%I。
在帮助页面的末尾,我们找到了替换规则:
此外,FOR变量引用的替换已得到增强。 您现在可以使用以下可选语法:
...
%~xI - expands %I to a file extension only
....
%~zI - expands %I to size of file
将所有这些结合起来,可以得到上面的文件源过滤初始解决方案。