windows - 带变量的批处理脚本文件传输
问题描述
感谢您抽出宝贵时间帮助我解决我正在尝试解决的问题。我已经编写了一些批处理文件,但我没有太多经验,所以这对我来说有点困难。我正在尝试将 pdf 文件从特定位置传输到另一个位置的单个文件夹。每个文件都将包含这种格式“GOOGLE EARTH_2018-08-07_5485A635.pdf”,并基于“GOOGLE EARTH_”将其传输到名为“GOOGLE EARTH_Google Corporation”的合法文件夹中。因此,根据文件的初始部分,将其传输到以指定文件名开头的文件夹中。这是我到目前为止所拥有的,但不起作用。
@ECHO OFF
SETLOCAL
SET "sourcedir=C:\Users\Alpha\Documents\NOTEPAD Coding\File Transfer Coding\Files"
SET "destdir=C:\Users\Alpha\Documents\NOTEPAD Coding\File Transfer Coding\Transfer"
FOR /f "delims=" %%a IN (
'dir /b /a-d "%sourcedir%\*.pdf" '
) DO (
FOR /f "tokens=1delims=_-" %%b IN ("%%a") ) DO (
FOR /f "delims=" %%d IN (
'dir /b /ad "%destdir%\*%%b*" '
) DO (
MOVE "%%a" "%sourcedir%\%%d\"
)
)
GOTO :EOF
解决方案
在我的回答中,我已对齐您的代码以提高可读性,以向您展示右括号如何与每个FOR
命令对齐。我将MOVE
命令更改为使用源目录变量,因为第一个FOR
变量只保存文件名。还更改了第一个IN
子句以迭代PDF
文件。
@ECHO OFF
SETLOCAL
SET "sourcedir=C:\Users\Alpha\Documents\NOTEPAD Coding\File Transfer Coding\Files"
SET "destdir=C:\Users\Alpha\Documents\NOTEPAD Coding\File Transfer Coding\Transfer"
FOR /f "delims=" %%a IN ('dir /b /a-d "%sourcedir%\*.pdf" ') DO (
FOR /f "tokens=1 delims=_-" %%b IN ("%%a") DO (
FOR /f "delims=" %%d IN ('dir /b /ad "%destdir%\*%%b*" ') DO (
MOVE "%sourcedir%\%%a" "%destdir%\%%d\"
)
)
)
GOTO :EOF
推荐阅读
- python - 找出一个字典中的键是否存在于字典列表中
- mysql - 我不使用索引的最左边前缀,为什么索引在结果中有效?
- sql - 将 CSV 中的 SQL 日期时间转换为本地日期时间
- google-sheets - 谷歌表格查询返回奇怪的格式
- r - 如何在readr read_csv(list.files for loop)中组合路径和变量?
- c++ - 如何读取文件中每一行上由不同分隔符分隔的整数值?
- html - 网页在桌面上看起来不错,但在我的智能手机上却不行
- opc-ua - 如何使用 OPC UA 命名空间?
- r - 数据帧到fasta文件格式
- javascript - 单击返回按钮后如何获取更新的数据?