我一直在寻找各处,但我找不到这个具体问题的答案。我刚刚开始使用批处理脚本进行文件/文件夹操作,并且很好地掌握了概念,但我无法解决这个问题。
情况: 我有成千上万的文件格式为'name(some info).ext'
我正在寻找一种在空格括号之前提取信息的方法,然后创建一个包含该信息的文件夹。 在此之后,我想将该文件移动到该文件夹。
任何人都可以指导我这样做吗?
答案 0 :(得分:0)
我可以建议,(基于你现在删除的答案):
@Echo Off
Set "targetdir=%UserProfile%\Desktop\testfolder"
CD /D "%targetdir%" 2>Nul || Exit /B
For %%A In (*.rp2) Do For /F %%B In ("%%~nA") Do (
If Not Exist "%%~B\" MD "%%~B"
Move /Y "%%A" "%%~B">Nul)
这是一个版本,以满足包含空格的文件名以及在左括号前有0
或更多空格的文件名。 它还应包括那些没有括号的:
@Echo Off
Set "targetdir=%UserProfile%\Desktop\testfolder"
CD /D "%targetdir%" 2>Nul || Exit /B
Set "_="
For %%A In (*.rp2) Do For /F "Delims=(" %%B In ("%%~nA"
) Do Call :Sub "%%A" "%%B"
Exit /B
:Sub
If Not Defined _ Set "_=%~2"
If "%_:~-1%"==" " (Set "_=%_:~,-1%" & GoTo Sub)
If Not Exist "%_%\" MD "%_%"
Move /Y %1 "%_%">Nul
Set "_="
答案 1 :(得分:0)
这应该做的工作:
@ECHO OFF
SETLOCAL EnableDelayedExpansion
FOR %%G IN ("C:\adjust\path\*.ext") DO (
SET "folder_name=%%~nG"
CALL :create_dir
MOVE "%%G" "%%~dpG!folder_name!\%%~nxG"
)
PAUSE
EXIT
:create_dir
SET "end_bit=!folder_name:*(=!"
SET "folder_name=!folder_name:%end_bit%=!
SET "folder_name=!folder_name:~0,-2!"
MD "!folder_name!" >nul 2>&1
EXIT /B
这将为example
创建目录example (info).ext
并将该文件移动到所述目录中。