Windows 更新信息而不批量创建新行

Windows 更新信息而不批量创建新行,windows,batch-file,cmd,Windows,Batch File,Cmd,我一直在使用的脚本读取CD-ROM驱动器“I”上的所有文件夹,并搜索mp3文件,将它们复制到目标“e:\mp3\new”上 让我们假设在本例中找到了115个文件 我从上述代码中得到的信息: 共找到115个文件 文件:1/115文件:2/115文件:3/115文件:4/115文件:5/115(…)文件:115/115 我想要什么: 共找到115个文件 文件:X/115其中,每当成功复制mp3文件时,屏幕上的X将不断更新 有什么帮助可以解决这个问题吗?首先,您的计数器初始化错误,应该将计数器设置为零

我一直在使用的脚本读取CD-ROM驱动器“I”上的所有文件夹,并搜索mp3文件,将它们复制到目标“e:\mp3\new”上

让我们假设在本例中找到了115个文件

我从上述代码中得到的信息:

共找到115个文件
文件:1/115文件:2/115文件:3/115文件:4/115文件:5/115(…)文件:115/115

我想要什么:

共找到115个文件
文件:X/115其中,每当成功复制mp3文件时,屏幕上的X将不断更新


有什么帮助可以解决这个问题吗?

首先,您的计数器初始化错误,应该将计数器设置为零(如
set count=0
),而不是设置为一以获得正确的数字

其次,您应该用
替换
echo | set/p=
,因为管道(
|
)比简单(输入)重定向(
nul>慢
)
端部

首先,您的计数器初始化错误,应该将计数器设置为零(如
set count=0
)而不是一,以获得正确的数字

其次,您应该用
替换
echo | set/p=
,因为管道(
|
)比简单(输入)重定向(
nul>慢
)
端部


为实现这一目标,您编写了哪些内容并进行了哪些尝试?您的问题目前看起来像是一个离题代码请求@Compo我已经从头开始编写了所有脚本,并尝试了几种组合,但没有一种组合产生了“我想要的”结果。你需要移动光标。有几种方法可以做到这一点。搜索/选择一种方法应该很容易。您应该首先用
+空格替换
echo
;然后您需要回车字符将光标移回同一行……如果您使用windows 10,ANSI转义码可用于定位光标,清除该行并从所选位置打印。[1;1H将光标重新定位到第1行第1列。[K将从该点清除该行。所有内容:ECHO[1;1H[K“您的邮件”.表示ANSI转义字符。为实现此目标,您编写了哪些内容并尝试了哪些操作?您的问题目前看起来像是一个离题代码请求!@Compo我已从头开始编写了所有脚本,并尝试了多种组合,但没有一个生成了“我想要的内容”结果。您需要移动光标。有几种方法。搜索/选择一种方法应该很容易。您应该首先用
+空格替换
echo
;然后需要回车符将光标移回同一行……如果您使用windows 10,可以使用ANSI转义码定位t光标,清除该行,然后从所选位置打印。[1;1H将光标重新定位到第1行第1列。[K将从该点清除该行。所有内容:ECHO[1;1H[K“您的邮件”。表示ANSI转义字符。太好了!非常感谢您的时间和解释。您还可以告诉我:1-为什么您在
“.mp3”
?”上使用引号;2-为什么在
集/a“index+=1”
?;3-为什么
“%%g”
而不是
“%%g”
?;4-什么是
^(.^)rem是什么意思?不客气!在这种情况下不必使用引号(大约
*.mp3
),但在一般情况下,路径应该用空格或其他特殊字符括起来;这就是为什么我在这里也这么做;
%%~g
在这个上下文中删除了潜在的周围引号,所以这确保了没有双引号…引号的
语法对特殊字符(如
集)是安全的“VAR=Value”
set/A“VAR=Integer”
),引号不是该值的一部分;请注意,这需要启用,但无论如何它们都是默认值。
^
是批脚本中的转义字符,它确保%%Z
内部
循环的结束
不会被/F%%B
外部
循环识别;否则,语法错误或者当外部循环看起来不完整时会出现…太好了!非常感谢您的时间和解释。您还可以告诉我:1-为什么您在
“.mp3”
?;2-为什么在
集合/a“index+=1”
?;3-为什么
“%%g”
而不是
“%%g”“
?;4-rem
是什么意思?不客气!在这种情况下,不必使用引号(大约
*.mp3
),但在一般情况下,路径应该用空格或其他特殊字符括起来;这就是为什么我在这里也这么做;
%%~g
在这个上下文中删除了潜在的周围引号,所以这确保了没有双引号…引号的
语法对特殊字符(如
集)是安全的“VAR=Value”
set/A“VAR=Integer”
),引号不是该值的一部分;请注意,这需要启用,但无论如何它们都是默认值。
^
是批脚本中的转义字符,它确保%%Z
内部
循环的结束
不会被/F%%B
外部
循环识别;否则,语法错误或者当外环看起来不完整时会出现。。。
@ECHO off

setlocal enabledelayedexpansion

cd /d "i:\"
set count=1
for /r %%d in (*.mp3) do (
     set /a count+=1
     )
echo There were %count% files found

set countb=1
for /r %%g in (*.mp3) do (
     set /a countb+=1 
     echo|set /p = File: !countb!/%count% 
     copy "%%g" "e:\MP3\new" > nul
)

endlocal