我有个问题。
我有一个脚本,我想将一个文件(这里以 S_ 开头)移动到一个文件夹,该文件夹始终以 P_ 开头。
这是目录中唯一我想将其移动到的文件夹,但是当我像
move "C:\Temp\Test\S_*" "C:\Move\New\P_*"
它会在中创建一个新文件C:\移动\新建,但我希望它位于唯一以 P_ 开头的文件夹中。
希望你能收到。提前谢谢。:-)
答案1
用于for
扩展通配符:
for /d %x in (C:\Move\New\P_*) do set dest=%%x
这会将%dest%
变量设置为您想要的目录;将变量与 一起使用move
。
(这通常会循环全部匹配的文件(或指定文件夹/d
)并最终设置%dest%
为最后一项。如果只有一个匹配项,它当然是最后一个。)
答案2
@echo off
cd /d "C:\Move\New\P_Full_Name" && move "C:\Temp\Test\S_*" .
1.使用完整路径名输入目标文件夹:
cd /d "C:\Move\New\P_Full_Name"
2.使用该操作符仅当命令返回成功时&&
才会执行该move
命令,否则忽略该命令:cd /d
move
cd /d ... && move ...
3.当你位于target
文件夹中时(cd /d
命令返回成功),命令解释器(cmd.exe
)将把当前文件夹识别为命令.
中的目标“ ” move
:
move "C:\Temp\Test\S_*" .
- 观察1:该
move
命令和/或命令解释器(cmd.exe
)将不会翻译/解释通配符“*
”来计算目标的全名。
- 观察2:循环遍历名称以以下名称开头的多个文件夹
P_
:
@echo off
cd /d "C:\Move\New\"
for /d %%i in (P_*)do cd /d "%%~fi" && =;(
2>nul move "C:\Temp\Test\S_*" .
);=
其他资源:
cd /d
Move /?
For /?
For /D /?
- 条件执行
- 命令重定向
|
,<
,>
,2>
, ETC。
- 通配符在 MS-DOS 中如何发挥作用?// 也适用于
cmd.exe
- Windows 命令解释器如何
cmd.exe
解析脚本