2

如果该标题还不够令人困惑..希望我想做的事情更容易理解。

Windows 7 以防万一。

我正在工作的文件夹中有多个目录;

C:\WorkingDir\1
C:\WorkingDir\2
C:\WorkingDir\3
and so on

在每个文件夹(1、2、3 等)中都有一个子目录,没有其他文件或文件夹;

C:\WorkingDir\1\5E04AB
C:\WorkingDir\2\4F07FC
C:\WorkingDir\3\9DA04F

我需要将每个子目录从父文件夹中移动到一个新文件夹;

C:\NewFolder\5E04AB
C:\NewFolder\4F07FC
C:\NewFolder\9DA04F

就是这样!我认为这可能很简单,但我无法理解变量或解释如何使用它们的更好资源。我根本不怎么使用批处理文件,所以我很抱歉这种求助的呼声。希望知识渊博的人有一个简单的解释可以帮助我:-)

我发现了这个:http ://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr=true

但是有人可以将我链接到一个资源,在那里我可以了解有关批处理变量和参数的更多信息以供将来参考吗?

谢谢你,谢谢你,谢谢你

更新:

@endoro 感谢您的回复。我第一次尝试运行您的代码时一定有用户错误。它工作正常,一切都很好!非常感谢!

更新 2 运行用户 1 贡献的代码后,它将创建我的 NewFolder 目录,但不会向其中复制任何内容。它仍然是空的。这是我运行 DOS 时的一些重复输出:

C:\WorkingDir>(
set fldr2=C:\WorkingDir\1\5E04AB
 move "C:\WorkingDir\\" "C:\NewFolder\"
)
The system cannot find the file specified.

C:\WorkingDir>(
set fldr2=C:\WorkingDir\2\4F07FC
 move "C:\WorkingDir\\" "C:\NewFolder\"
)
The system cannot find the file specified.

C:\WorkingDir>(
set fldr2=C:\WorkingDir\3\9DA04F
 move "C:\WorkingDir\\" "C:\NewFolder\"
)
The system cannot find the file specified.`
4

2 回答 2

0

请查看输出并删除echo,如果没问题:

@echo off &setlocal 
set "workingdir=WorkingDir"
md "C:\NewFolder" 2>nul

pushd "%workingdir%"
cd
for /d %%i in (*) do for /d %%j in ("%%~i\*") do echo move "%%~fj" "C:\NewFolder\%%~nxj"
popd
于 2013-04-17T18:16:35.170 回答
0

我无法对此进行测试,但是:

@echo off
setlocal EnableDelayedExpansion
md "c:\NewFolder\"
cd "C:\WorkingDir\"
for /D /r %%a in ("*") do (
    set fld1=%%a
    cd "%fld1%"
    for /D /r %%b in ("*") do (
        set fld2=%%b
        move "c:\WorkingDir\%fld1%\%fld2%" "C:\NewFolder\%fld2%"
        )
    )

还有一个很好的批处理资源:

http://ss64.com/nt/

于 2013-04-17T19:30:00.907 回答