batch-file - 如何根据文件名移动文件?
问题描述
我正在尝试根据文件名将文件移动到现有的子文件夹中。
例如,我想将一个名为AP16742
found in the directory的文件移动到名为 directoryX:\Files
的文件夹AP
中X:\Files\AP
。其他名为MO14823
我要移动到MO
目录中的文件夹中的文件X:\Files\MO
。
我在编码方面缺乏经验,所以我需要解释来提供一个示例。
这是我尝试过的:
@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "destdir=U:\destdir"
FOR /f "delims=" %%a IN ('dir /b /a-d "%sourcedir%*.xml" ') DO (
FOR /f "tokens=1delims=_-" %%b IN ("%%a") DO (
FOR /f "delims=" %%d IN ( 'dir /b /ad "%destdir%*%%b*" ' ) DO (
ECHO(MOVE "%%a" "%destdir%\%%d\"
)
)
)
GOTO :EOF
解决方案
一个简单的解释是:
- 您希望
X:\Files
使用文件名的前 2 个字母将文件分发到子文件夹中。 - 要获取子字符串,您需要将 for 变量的内容设置为普通变量。
- 在(代码块)内设置和使用变量需要延迟扩展。
@Echo off&SetLocal EnableExtensions EnableDelayedExpansion
Pushd "X:\Files"
For %%A in (*) do (
Set "File=%%~nA"
if not exist "!File:~0,2!" md "!File:~0,2!" 2>&1>Nul
Move "%%A" "!File:~0,2!"
)
Popd
如果您只想移动不同的 2 个字母对而不是所有文件,这也可以不费吹灰之力。
推荐阅读
- python-2.7 - 是否可以通过在 Tkinter 中读取保存的文件来创建按钮
- javascript - 如何使用 Krpano 中 db/json 源中的 lat、long 值动态添加热点
- ios - Nativescript 应用程序在 iOS 14 上是否存在问题?
- javascript - npm "这个版本的 'buffer' 已经过时了。" 您必须更新到 v4.9.2 或更高版本
- python - 在模拟配置时使用 python 单元测试中的固定输入端到端测试 Airflow DAG
- jdbc - Kafka 连接器:如何使用 OR 运算符和递增列执行查询?
- javascript - 在基本 catch 块中处理 promise 拒绝
- php - PHP用负开始值计算时间
- php - 为 PHP 安装 gRPC 失败
- android - PDF.js 无法在 Android 11 上显示来自 externalFilesDir 的 PDF