2015-07-21 163 views
4

现状:如何通过文件夹循环移动文件夹(批量)?

我尝试在外壳移动在循环中的文件,但我的代码是行不通的。

for /D %%F in (*) do (
    if "%%F" NEQ "%directoryToPutFilesIn%" (
    move /y "%%F" "%directoryToPutFilesIn%" 
) 
) 

经过几小时的测试,我意识到这是因为%% F指向文件夹,因此文件无法移动。

不好解决:

我做了工作,证实了我的怀疑是保存在其他变量%% F的值,并使用在下一回合变量移动的文件的方式。请注意,以下情况需要在第一回合初始化%precedentFile%

for /D %%F in (*) do (
move /y "%precedentFile%" "%directoryToPutFilesIn%" 
    if "%%F" NEQ "%directoryToPutFilesIn%" (
    move /y "%%F" "%directoryToPutFilesIn%" 
    set precedentFile=%%F 
) 

问题:

这种解决方案是不实际的,感觉是非。有没有办法调整我的当前代码来做到这一点,或者只是另一种方式?

+0

您是否试图只移动文件夹,或'.txt'文件等..? – UnknownOctopus

+0

我有2个循环,我展示的是文件夹。我有另一个文件几乎相同。两者都不起作用。 – Cher

+0

尝试下面的代码移动文件和文件夹,希望帮助:) :) – prudviraj

回答

2

尝试下面的代码从一个文件夹中的批处理脚本文件移动到另一个:

for /f %%a in ('dir /a:-D /b') do move /Y "%%~fa" "%directoryToPutFilesIn%" 

说明:

dir /a:-D /b : This command will list all files in the directory 
move /Y "%%~fa" "%directoryToPutFilesIn%" : This will move all files in the directory where this command is executed to the destination you have mentioned. 
%%~fa : This command will get full qualified path of the file with it's name. 

试试下面的代码移动目录: 以下命令将在路径移动目录该命令执行到所提供的目的地。在这将是H:\驱动器,相应地更改

for /D %%b in (*) do move /Y "%%~fb" "H:\" 
+0

我得到以下错误:在批处理参数的路径运算符的以下使用 替代无效:%〜FA” – Cher

+0

其实我加了一个%变量之前和它的作品。我不能编辑它。我将其标记为答案。你知道为什么需要2%? – Cher

+0

如果你是上面的命令直接在它工作正常命令行执行,但如果你希望他们在批处理脚本,你需要使用一个额外的“%”,使用变量的值。这是由设计.. – prudviraj

相关问题