【发布时间】:2020-05-24 02:39:14
【问题描述】:
我有这样的文件结构:
folder +---a | \---b | \---foo bar +---c | \---d | \---foo bar +---. \---.
我想使用batch-file 将foo bar 移动到它自己的父文件夹。
我在command-line 中试过这个,但它说:
The syntax of the command is incorrect.
cd "path to folder"
for /r %x in (foo bar) do move "%x" ".."
编辑
我已将我的命令更改为:
for /r %x in ("foo bar") do move "%x" "%~px.."
但是现在报错了,因为这里 foo 和 bar 之间有空格:("foo bar"),我该怎么办?使用foo?bar 代替"foo bar" 可能吗?
编辑 2
我的最终命令:
for /d /r %x in ("?oo bar") do if "%~nx"=="foo bar" move "%x" "%~px.."
我没有使用(*),因为如果您有数百个文件夹,它会大大增加命令执行时间,因为它必须检查每个文件夹的名称。
感谢大家的帮助
【问题讨论】:
-
for /r %x in ("foo bar") do move "%x" "%~px.." 我已经把我的命令改成了这个,但现在它给出了错误,因为有引号在这里:(“foo bar”)我该怎么办?用 foo?bar 代替“foo bar”吧?
-
在同一目录
folder中不能有两个名为foo bar的目录。如果您的问题保持了您打算向我们展示的结构,您还可以确认我的大量编辑吗? -
正如已经指出的那样,如果您尝试将两个文件夹都上移一级到同一级别,则会发生冲突。但是您还通过
FOR /R命令学到了一个小怪癖。如果你没有发生碰撞,你可以这样做:for /D /r %G IN ("foo ba?") do if /i "%~nxG"=="foo bar" move "%G" .. -
以
for /r %x in ("foo bar*") do @ECHO move "%x" "%~px.."开头 - 您必须在for /r …循环中使用通配符。此外,调试时使用ECHO move …。 -
@Compo 不,这是错误的结构。 b 在 a 文件夹中,d 在 c 文件夹中。
标签: batch-file command-line batch-file command-line move subdirectory