batch-file - 将具有确切名称的多个文件夹移动到它自己的父文件夹
问题描述
我有这样的文件结构:
folder +---a | \---b | \---foo bar +---c | \---d | \---foo bar +---. \---.
我想foo bar
使用批处理文件移动到它自己的父文件夹。
我在命令行中试过这个,但它说:
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 /d %A in (*) do if /i "%~nxA" == "foo bar" move /y "%~A" "%~dpA.."
用作. *
_ (set)
如果您查看for /?
,您可能会看到:
(set) 指定一组一个或多个文件。可以使用通配符。
所以,(set)
是文件,而不是文件夹。
理想情况下,对for
变量使用不是修饰符字母的字母。x
表示扩展修饰符。
%~nxA
将是当前文件夹名称并检查是否为foo bar
.
如果已经存在则move
失败foo bar
,则拒绝访问以警告它的存在。
%
如果在批处理文件中使用,请将字符加倍为%%
.
备用循环:
for /f "delims=" %A in ('dir /b /s /a:d "*foo bar"') do if /i "%~nxA" == "foo bar" move /y "%~A" "%~dpA.."
它在循环开始之前获取路径,以避免同一文件夹的多次移动。
推荐阅读
- share - 将私有托管区域关联到另一个帐户,(NotAuthorizedException)(退出状态 255)
- pandas - 如何最好地加入/合并列上的两个熊猫数据框(pandas.core.series.Series 和 pandas.core.frame.DataFrame)
- javascript - Vue没有应用样式类
- r - 关于 R 代码与舍入素数有关的问题
- php - symfony 3.4“驱动程序发生异常:SQLSTATE [HY000] [2002] php_network_getaddresses:getaddrinfo失败:名称或服务未知”
- c# - 并行运行测试和切换 iframe 时如何防止测试失败?
- c# - System.ArgumentNullException: '值不能为空。参数名称:key'
- windows - 在 Windows 10 重新启动到某个时间点期间黑屏
- javalite - 如何在 javalite db 迁移器中外部化用户名和密码?
- macos - applescript:如何复制真实文件而不是别名,但递归