我想出的最好的方法是:
for %%i in (*) do md "%%~ni" && move "%%~i" "%%~ni"
现在的问题是我正在为每个文件创建一个文件夹,并将所有文件移动到相应的文件夹中,但是相关内容现在位于不同的文件夹中,并且文件名完全相同的东西留在了主文件夹中。 / p>
我的文件夹中有文件
sadf_02.07.2018_sadfff.xlsx
sadf_03.07.2018_fgtrh.xlsx
suyuadf_05.07.2018_uktyuk.xlsx
sarthdf_05.07.2018_sadyukyfff.xlsx
sabbdf_05.07.2018_saukyukdfff.xlsx
我需要按名称中的日期创建文件夹,并将此文件移入该文件夹
所以我应该有:
02.07.2018
sadf_02.07.2018_sadfff.xlsx
03.07.2018
sadf_03.07.2018_fgtrh.xlsx
05.07.2018
suyuadf_05.07.2018_uktyuk.xlsx
sarthdf_05.07.2018_sadyukyfff.xlsx
sabbdf_05.07.2018_saukyukdfff.xlsx
那要怎么做到呢?
答案 0 :(得分:1)
以下批次使用:
:: Q:\Test\2018\07\25\SO_51513265.cmd
@Echo off
PushD "X:\Folder\to\start" || (Echo couldn't find folder&pause&Exit /b 1)
For %%A in (*_*_*.xlsx) Do For /f "tokens=2delims=_" %%B in ("%%A") Do (
Echo=%%B|Findstr "^[0-9][0-9]\.[0-9][0-9]\.20[0-9][0-9]$" 2>&1>NUL && (
if not exist "%%B" MD "%%B">NUL
Move "%%A" "%%B\"
)
)
运行批处理后的样本树:
> tree /f
├───02.07.2018
│ sadf_02.07.2018_sadfff.xlsx
│
├───03.07.2018
│ sadf_03.07.2018_fgtrh.xlsx
│
└───05.07.2018
sarthdf_05.07.2018_sadyukyfff.xlsx
suyuadf_05.07.2018_uktyuk.xlsx