2016-04-12 24 views
2

Merhaba Bir sayı listesi oluşturmak için aşağıdaki kodu almayı başardım ve oluşturulan her sayının sonuna virgül koydum. Ancak, oldukça meydan böylece şu anda benim çıkış ben olmak istiyorum AncakBir .txt dosyasındaki sayıların bir listesine katılarak, [boşluk]

00001, 
00002, 
00003, 
00004, 
00005, 
00006, 
00007, 
00008, 
00009, 
00010, 
00011, 

bir ,[space]

@ECHO OFF 
setlocal EnableDelayedExpansion 
set _Output=%UserProfile%\Desktop\NumGen.txt 

::only change these three lines 
set "start=1" ::starts from this number 
set "amount=10" ::amount of files created 
set "length=5" ::length of fileNames 
set "join_with=, " ::what to join each number with 

set /a "last=%start%+%amount%" 
for /l %%i in (%start%,1,%last%) do (
set "folderName=0000000000%%i" 
set "folderName=!folderName:~-%length%!%join_with%" 
>>"%_Output%" ECHO.!folderName! 
) 
pause 

ayrılmış aynı satırda onları almak için

00001, 00002, 00003, 00004, 00005, 00006, 00007, 00008, 00009, 00010, 00011 

Windows 10 64bit'im var. Herhangi bir yardım için

cevap

2

başka Bash ve saygınlık bu vermeye karar uzun bir aradan sonra. Bu kod başlangıç ​​numarasını, sayıların miktarını, sayıların uzunluğunu belirler ve , " birlikte , " Sonra

ScriptB birleştirir ile her numarayı onlara katılır ve NumList.txt kaydeder

::CallScript 
@ECHO OFF 
CALL :ScriptA 
CALL :ScriptB 
CALL :ScriptC 
pause 
goto :eof 


:ScriptA 
@ECHO OFF 
setlocal EnableDelayedExpansion 
set _Output=%UserProfile%\Desktop\NumGen.txt 
::only change these three lines 
set "start=1" 
set "amount=10" 
set "length=5" 
set "join_with=, " 
set /a "last=%start%+%amount%" 
for /l %%i in (%start%,1,%last%) do (
set "folderName=0000000000%%i" 
set "folderName=!folderName:~-%length%!%join_with%" 
>>"%_Output%" ECHO.!folderName! 
) 
goto :eof 


:ScriptB 
@ECHO OFF 
    setlocal enableextensions enabledelayedexpansion 
set "var=" 
for /f "usebackq delims=" %%a in ("%UserProfile%\Desktop\NumGen.txt") do set "var=!var!%%a" 
echo %var%> "%UserProfile%\Desktop\NumList.txt" 
goto :eof 


:ScriptC 
@ECHO OFF 
del "%UserProfile%\Desktop\NumGen.txt" 
goto :eof 

:-) Başarı

Son olarak, komut dosyası NumGen.txt dosyasını siler.

3

echo bunu yapamazsınız. Ancak set komutunu kullanarak bir çözüm, (ab) vardır:

for /l %%i in (1,1,5) do (
    <nul set /p "=%%i, " 
) 
echo(
+2

Teşekkürler Stephan Sadece bu (ab) 'nın XD etrafındaki çalışmaları kullanarak biraz problem yaşıyorum. Tam bir betik örneği ekleyebilirseniz çok fazla sorun yoksa – Jonas

+2

sadece " Stephan

1

Stephan SET/P ile bir çözümü vardır. Diğer seçenek, tüm dizeyi bir ortam değişkeni içinde oluşturmak ve sonra döngü bittikten sonra yazmaktır. Bu önemli ölçüde daha hızlıdır, ancak son dize uzunluğu ~ 8191 bayt aşarsa başarısız olur.

set "str=" 
for /l %%i in (%start%,1,%last%) do (
    set "folderName=0000000000%%i" 
    set "str=!str!!folderName:~-%length%!%join_with%" 
) 
>>"%_Output%" ECHO.!str! 

İsterseniz istenmeyen sondaki , kaldırmak olabilir:

>>"%_Output%" ECHO.!str:~0,-2! 
İlgili konular