Batch file 是否可以使用批处理文件执行此操作?
在我开始发布代码之前,我想知道这是否可行 我有一个文件夹目录,需要移动到新目录。 但我只需要移动其中仅包含2个文件的文件夹。 其余文件夹中有2个以上的文件,但它们需要保留。Batch file 是否可以使用批处理文件执行此操作?,batch-file,Batch File,在我开始发布代码之前,我想知道这是否可行 我有一个文件夹目录,需要移动到新目录。 但我只需要移动其中仅包含2个文件的文件夹。 其余文件夹中有2个以上的文件,但它们需要保留。 那么这对批处理文件是否可行呢?这很有趣,所以我尝试了一下: @echo off set "dir=C:\Your\Current\Directory" set "ndir=C:\Your\New\Directory" setlocal enabledelayedexpansion for /d %%A in (%dir%
那么这对批处理文件是否可行呢?这很有趣,所以我尝试了一下:
@echo off
set "dir=C:\Your\Current\Directory"
set "ndir=C:\Your\New\Directory"
setlocal enabledelayedexpansion
for /d %%A in (%dir%\*) do (
pushd "%%A"
for /f %%B in ('dir /a-d-s-h /b ^| find /v /c ""') do (
set cnt=%%B
if "!cnt!" == "2" (if not exist "%ndir%\%%~nA" robocopy "%%A" "%ndir%\%%~nA" /e)
)
)
pause
我不断遇到问题,所以我修改了一些东西,使之符合我的要求;可能还有更优雅的方式,但这确实奏效了\_(ツ)_/“”.第一件事是为当前目录(dir
)和新目录(ndir
)设置变量,以便以后更容易消化;我们还需要启用延迟扩展,因为计数变量(cnt
)的值将在循环迭代之间更改。循环的第一个是/d
,它将在文件夹中循环-我们将每个文件夹设置为参数%%A
,并使用该参数在运行嵌套命令之前更改目录(使用pushd
)
的第二个循环是/f
,它将通过命令结果进行循环-本例中的命令是dir
和find
。对于dir
我们指定/a
来显示-d
不是文件夹、-s
系统文件或-h
隐藏文件的所有文件,并且以/b
裸格式显示该输出。使用dir
的输出,我们运行find
并指定/v
显示所有非空行,然后/c
计算数字-这将成为参数%b
最后,我们将%%B
设置为计数变量(cnt
)-如果!cnt!
等于2
,我们将查看文件夹是否已存在于新目录中,如果不存在,我们将自动复制它。move命令给了我一些麻烦,因为文件夹将被循环锁定,因此如果需要,您还可以输入DEL
命令来删除原始文件夹
如果有帮助,请告诉我!希望你的研究进展顺利
参考资料:,,,是的,这是可行的。一旦你研究、编写和测试了你的代码,如果它不能按预期的方式工作,就需要为它所展示的问题寻求具体的帮助。