标签: forfiles

如何编写Windows批处理脚本以从目录中复制最新文件?

我需要将目录中的最新文件复制到新位置.到目前为止,我已经找到了forfiles命令的资源,这里有一个日期相关的问题,以及另一个相关的问题.我只是把这些碎片放在一起有点麻烦!如何将该目录中的最新文件复制到新位置?

batch-file forfiles

67
推荐指数
4
解决办法
17万
查看次数

Forfiles批处理脚本(转义@字符)

我正在研究一个批处理脚本,它允许我使用forfiles删除早于设定期间的文件.目前,我的目标是打印将被删除的文件.

我正在使用的forfiles调用从cmd.exe shell中完美运行,但是只要我将它嵌入到批处理脚本中,就会barfs.我怀疑这是因为@字符未被正确转义,但我不确定.

我正在运行的命令是:

forfiles /S /P "r:\" /m *.bak /d -10 /c "cmd /c echo @PATH"
Run Code Online (Sandbox Code Playgroud)

并导致以下错误:

ERROR: Invalid argument/option - '@PATH'
Type "FORFILES /?" for usage.
Run Code Online (Sandbox Code Playgroud)

我已经搜索了整个地方并尝试了一些不同的方案来转义@PATH组件.从@@ PATH\"@ PATH \"的所有内容都没有结果.

任何帮助,将不胜感激!

我还应该注意到,我从这里开始了很多关于forfiles的知识.

batch-file forfiles

18
推荐指数
3
解决办法
6万
查看次数

具有UNC路径的forfiles

我试图使用forfiles删除超过7天的文件.这些文件位于UNC路径中.下面是我正在使用的脚本.

Forfiles -p \\devexpress\C$\FULL\ -s -m *.* -d -7 -c "cmd /c del /q @path" 
Run Code Online (Sandbox Code Playgroud)

但是我收到一个错误,提到不支持UNC路径(\ machine\share).

似乎有可用的解决方法,但无法得到一个明确的答案谷歌搜索.

batch-file forfiles

16
推荐指数
2
解决办法
5万
查看次数

没有cmd/c的forfiles

我可以按预期运行forfiles命令 cmd /c

C:\>forfiles /c "cmd /c ping /a"
IP address must be specified.

但是,如果我删除它cmd /c,它不再识别任何参数,只有基本命令

C:\>forfiles /c "ping /a"
Usage: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]
            [-r count] [-s count] [[-j host-list] | [-k host-list]]
            [-w timeout] [-R] [-S srcaddr] [-4] [-6] target_name

我必须使用cmd /c,即使PATH上有外部命令吗?

cmd forfiles

10
推荐指数
2
解决办法
2010
查看次数

Forfiles - 文件夹路径中的空格

我正在运行一个批处理文件,其中有一个 forfiles 命令

FORFILES -p%spinputarchrootpath% -m*.csv -d-365 -c"CMD /C DEL @FILE"

%spinputarchrootpath% variable maps to a folder location (Y:\Temp Documents\testfolder).
Run Code Online (Sandbox Code Playgroud)

现在,由于文件夹名称(临时文档)中的空格,上述命令引发错误。

如何处理这个空间?我试过在%spinputarchrootpath%变量周围加上引号,但它不起作用。

batch-file forfiles

3
推荐指数
1
解决办法
1万
查看次数

为什么我们不能在 FORFILES 脚本中使用 CALL :label 命令?

这段代码

forfiles /P %pathname% /M *.log /c "cmd /c echo @file"
Run Code Online (Sandbox Code Playgroud)

会很高兴地列出一堆文件。

我们可以替换ECHOwithRENAMEMOVE或许多其他内部命令的组合:例外是CALL标签名称的 a 。

例如将ECHO上面的替换如下:

forfiles /P %pathname% /M *.log /c "cmd /c CALL :listit @file"
 : :
 : :
exit /b

:listit
echo %1
exit /b
Run Code Online (Sandbox Code Playgroud)

我希望有相同的输出会给出错误消息,通常

Invalid attempt to call batch label outside of batch script.
Run Code Online (Sandbox Code Playgroud)

这种行为不是 Microsoft 的文档所评论的,而且由于替代方案已经足够了,我并没有打算让它发挥作用。

不过我有兴趣嘛,为什么不呢?!,所以我提出这个问题

为什么我们不能在 FORFILES 脚本中使用 CALL :label 命令?

谢谢你。

cmd batch-file forfiles

3
推荐指数
1
解决办法
749
查看次数

标签 统计

forfiles ×6

batch-file ×5

cmd ×2