返回列表 发帖
本帖最后由 FOR 于 2012-6-29 21:14 编辑

遇同名文件跳过
@echo off
for /f "delims=" %%I in ('dir/b/s/a-d') do (
for /f "tokens=1,2* delims=\" %%a in ("%%~dpI") do (
if not "%%c"=="" (
if not exist "%%a\%%b\%%~nxI" move "%%I" "%%a\%%b"
)
)
)
pauseCOPY

TOP

回复 9# comicguests

笔误,漏写了一个 % 号
@echo off
for /f "delims=" %%I in ('dir/b/s/a-d') do (
        for /f "tokens=1,2* delims=\" %%a in ("%%~dpI") do (
                if not "%%c"=="" (
                        if not exist "%%a\%%b\%%~nxI" move "%%I" "%%a\%%b"
                )
        )
)
pauseCOPY

TOP

本帖最后由 FOR 于 2012-7-3 01:43 编辑
@echo off
for /f "delims=" %%i in ('dir/b/s/a-d') do (
set "str=%%i"
setlocal enabledelayedexpansion
set "str=!str:*%cd%=!"
for /f "tokens=1 delims=\" %%a in ("!str!") do (
if not "%%i"=="!cd!\%%~nxi" move "%%i" "!cd!\%%a"
)
endlocal
)
pauseCOPY

TOP

多打了个括弧,你那里没提示“以达到最大递归层”吗?
@echo off
for /f "delims=" %%i in ('dir/b/s/a-d') do (
        set "str=%%i"
        setlocal enabledelayedexpansion
        set "str=!str:*%cd%=!"
        for /f "tokens=1 delims=\" %%a in ("!str!") do (
                if not "%%i"=="!cd!\%%~nxi"  move "%%i" "!cd!\%%a"
        )
        endlocal
)
pauseCOPY

TOP

19楼代码我实际测试是成功的。

TOP

再试试这个
@echo off&set /a n=1
call :Loop "%cd%"
:loop
for /f "tokens=1* delims=\" %%i in ("%~1") do (
set /a n+=1
if not "%%j"=="" call :Loop "%%j"
)
for /f "delims=" %%I in ('dir/b/s/a-d') do (
for /f "tokens=%n%* delims=\" %%a in ("%%I") do (
if not "%%b"=="" move "%%I" "%cd%\%%a"
)
)
pauseCOPY

TOP

本帖最后由 FOR 于 2012-7-4 12:53 编辑

我也是 win7 32位旗舰版
19、24楼的代码我这里都能成功
12楼的代码能正常运行,怎么24楼的就会不行呢??

TOP

返回列表