如何根据文件名自动创建文件夹并使用 .BAT 将文件移动到它的文件夹中
How to auto create folder based on filename and move the file into it's folder using .BAT
我已经解决了我的问题...我还没有解决的是,如果 .bat
文件位于父文件夹中并且它应该适用于所有子文件夹,该怎么做?
现在有一个限制,即只有当 .bat
文件与文件位于同一文件夹中时,它才会创建文件夹。如果文件在子文件夹中,则无法创建文件夹。
我有的是:
这个.bat
的文件名是:
organize.bat
@echo off
for %%i in (*) do (
if not "%%~ni" == "organize" (
md "%%~ni" && move "%%~i" "%%~ni"
)
)
我现在是怎么做的:
- 我将
.bat
文件与文件 放在一个文件夹中
- 当我点击它时,它会根据该文件夹中的文件创建一个名称的文件夹
- 它还会移动同名文件夹中的每个文件
我需要的:
- 将
.bat
文件放在主文件夹中,许多子文件夹都包含这些文件
- 点击它执行上面相同的任务
抱歉,如果我的解释令人困惑...我希望它仍然可以理解。
提前致谢!
您的尝试非常接近成功,但请注意使用简单方法而不检查每个细节的皱纹,因此,从这里开始:-
@echo off & Title %~n0
REM I recommend using cd /d "%~dp0" to ensure you start from the known cmd file folder location not some system folder
cd /D "%~dp0"
REM add the /R switch to run through subdirs
for /R %%i in (*) do (
REM replace organize to %~n0 so as to aid renaming by other users
if not "%%~DPni" == "%~DPn0" (
REM to allow for nested paths we need a fuller DP location for N (check it works exactly as desired then remove the echos)
echo md "%%~DPni" && echo move "%%~i" "%%~DPni"
)
)
注意带有双 .dot.s 的文件,例如 cmd.exe.lnk,因此首先检查那些 echo 的
md "C:\Users\me\Favorites\Links\cmd.exe"
move "C:\Users\me\Favorites\Links\cmd.exe.lnk" "C:\Users\me\Favorites\Links\cmd.exe"
我已经解决了我的问题...我还没有解决的是,如果 .bat
文件位于父文件夹中并且它应该适用于所有子文件夹,该怎么做?
现在有一个限制,即只有当 .bat
文件与文件位于同一文件夹中时,它才会创建文件夹。如果文件在子文件夹中,则无法创建文件夹。
我有的是:
这个.bat
的文件名是:
organize.bat
@echo off
for %%i in (*) do (
if not "%%~ni" == "organize" (
md "%%~ni" && move "%%~i" "%%~ni"
)
)
我现在是怎么做的:
- 我将
.bat
文件与文件 放在一个文件夹中
- 当我点击它时,它会根据该文件夹中的文件创建一个名称的文件夹
- 它还会移动同名文件夹中的每个文件
我需要的:
- 将
.bat
文件放在主文件夹中,许多子文件夹都包含这些文件 - 点击它执行上面相同的任务
抱歉,如果我的解释令人困惑...我希望它仍然可以理解。
提前致谢!
您的尝试非常接近成功,但请注意使用简单方法而不检查每个细节的皱纹,因此,从这里开始:-
@echo off & Title %~n0
REM I recommend using cd /d "%~dp0" to ensure you start from the known cmd file folder location not some system folder
cd /D "%~dp0"
REM add the /R switch to run through subdirs
for /R %%i in (*) do (
REM replace organize to %~n0 so as to aid renaming by other users
if not "%%~DPni" == "%~DPn0" (
REM to allow for nested paths we need a fuller DP location for N (check it works exactly as desired then remove the echos)
echo md "%%~DPni" && echo move "%%~i" "%%~DPni"
)
)
注意带有双 .dot.s 的文件,例如 cmd.exe.lnk,因此首先检查那些 echo 的
md "C:\Users\me\Favorites\Links\cmd.exe"
move "C:\Users\me\Favorites\Links\cmd.exe.lnk" "C:\Users\me\Favorites\Links\cmd.exe"