对于.BAT文件,我有点新手。请,我需要一个批处理文件,它将根据本地文件夹中的文件名创建文件夹,然后将这些文件移动到相应的文件夹中。文件夹名称需要由文件名中分隔符之前的字符确定,在本例中为下划线。
例如,它会采用这些文件
june_jahdfjlkaluie2.xlsx
june_jahdfjlkaluie.xlsx
august_nnnvbcnkziery2.xlsx
august_nnnvbcnkziery.xlsx
december_bagjd_kasdgf.xlsx
december_byuueyiuyoi.xlsx
创建这些文件夹
june
august
december
并根据下划线前的字符将文件移动到这些文件夹中。
这是我到目前为止的代码
@echo off &setlocal
for /f "delims=_" %%i in ('dir /b /a-d *.xls') do (
set "file=%%~i"
setlocal enabledelayedexpansion
set "folder=!file!"
mkdir "!folder!" 2>nul
move "!file!" "!folder!" >nul
)
endlocal
echo Did it work?
Pause
批处理文件可以根据文件名创建文件夹。但是,当它尝试移动文件时,会产生一个错误,指出“进程无法访问该文件,因为它正被另一个进程使用”。我尝试了几个修复,包括创建一个单独的for
命令来移动文件,似乎没有任何工作。
非常感谢任何建议。谢谢。
答案 0 :(得分:0)
@echo OFF
SETLOCAL
for /f "delims=_" %%i in ('dir /b /a-d *_*.xlsx') do (
mkdir "%%i" 2>nul
move "%%i_*.xlsx" "%%i" >NUL 2>nul
)
echo Did it work?
GOTO :EOF
可能会有效并且更容易。
请注意,我已将目标文件掩码更改为….xlsX
,因为.xslx
文件的短文件名不一定保留*_*.xls
格式。