简体   繁体   中英

Display output in a certain way using echo of batch

I am working on a program using batch where the program read root directories from a text file and count total number of Folders and Files in all th give root directories. The program is working as it should be but I want to display the output in a certain way.

This is how I want to display output

在此处输入图片说明

0 : OF : 6

The first value should change each time program finish counting in one root directory. I have written code for it but the output I am getting is this.

在此处输入图片说明

Here is code I have written to change it.

:textUpdate
echo !counter! : OF : %number%
GOTO :EOF

where counter is the current number of root directory and number is total number of directories found in the text file. Is there any way to display the output like the first one.

you can abuse set /p to write to screen. It doens't append a line feed. You also need a Carriage Return to go back to the beginning of the line to overwrite the old output:

@echo off
setlocal EnableDelayedExpansion
for /f %%a in ('copy /Z "%~dpf0" nul') do set "CR=%%a"
for /l %%n in (1,1,6) do (
    set /P "=Count %%n of 6!CR!" <nul
    timeout 1 >nul
)

The first for /f loop is just to get a CR (Carriage Return). You have to use delayed expansion to be able to use it ( %CR% does not work).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM