首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包含spaces循环的文件夹

包含spaces循环的文件夹
EN

Stack Overflow用户
提问于 2015-05-08 02:19:32
回答 1查看 37关注 0票数 0

我被卡住了,我已经尝试了所有我能想到的东西,但没有运气。我读过关于usebackq的文章,但不能让它工作。

我正在尝试创建一个批处理文件。应该检查folder1是否存在。如果存在,批处理文件将在folder1中创建名为Batch_1 Batch_2的文件夹。将folder1中的所有文件移动到Batch_1,然后将文件从某个位置移动到batch_2。

如果batch_2存在,它应该创建batch_3,然后将文件从某个位置移动到Batch_3,依此类推。

这就是我到目前为止所拥有的。当路径中没有空格时,它就像一个护身符...

代码语言:javascript
复制
@echo off &setlocal

set fullDest="C:\Users\Peppes Bodega\Desktop\hej hej\123"
set fullDest=%fullDest:"=%


if exist "%fullDest%" goto:omg2
echo %fullDest%

:omg1
echo normal flytt syntax
pause
goto:eof

:omg2
if exist %fullDest%\Batch_2 goto:omg3
for /d %%i in (%fullDest%) do (
    pushd %%i\
    set /a count=0
    for /d %%j in (*.*) do set /a count+=1
    popd
    call echo %%count%% folder(s^) in %%i
    call mkdir %fullDest%\Batch_%%count%%
    call MOVE C:\Users\%username%\Desktop\_BP_TEMP\*.txt %fullDest%\Batch_%%count%%
    pushd %%i\
    set /a count=0
    for /d %%j in (*.*) do set /a count+=1
    popd
    call mkdir %fullDest%\Batch_%%count%%
    call MOVE C:\Users\%username%\_BP_TEMP\*.txt %fullDest%\Batch_%%count%%
)
pause
goto:eof
:omg3
for /d %%i in (%fullDest%) do (
    pushd %%i\
    set /a count=0
    for /d %%j in (*.*) do set /a count+=1
    popd
    call mkdir %fullDest%\Batch_%%count%%
    call MOVE C:\Users\%username%\Desktop\_BP_TEMP\*.txt %fullDest%\Batch_%%count%%
)
pause
goto:eof

如果能帮上hand.cr的忙我会很感激的

EN

回答 1

Stack Overflow用户

发布于 2015-05-08 03:33:42

首先,让我们弄清楚一些笨拙的语法。

代码语言:javascript
复制
set fullDest="C:\Users\Peppes Bodega\Desktop\hej hej\123"
set fullDest=%fullDest:"=%

更好的方法是

设置"fullDest=C:\Users\Peppes Bodega\桌面\hej hej\123“

语法SET "var=value" (其中值可以为空)用于确保赋值的值中不包含任何零散的尾随空格。set /a可以安全地使用“无引用”。

接下来,如果目标包含通配符,则for /d会列出目录,因此您需要

代码语言:javascript
复制
for /d %%i in ("%fullDest%\*") do (

同样,无论在哪里使用fulldest,都需要用引号将名称括起来,以确保它被视为一个单独的项,而不是一个列表,因此

代码语言:javascript
复制
if exist "%fullDest%\Batch_2" goto:omg3

(类似于您的初始使用)

代码语言:javascript
复制
call MOVE "C:\Users\%username%\Desktop\_BP_TEMP\*.txt" "%fullDest%\Batch_%%count%%"

(move需要move source destination -引号,如图所示,告诉cmd每个元素可以包含空格)

类似地,

代码语言:javascript
复制
call mkdir "%fullDest%\Batch_%%count%%"

诸若此类。

pushd%s中的结束\是多余的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30108802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档