2016-04-12 5 views
2

こんにちは私は以下のコードを作成して数字のリストを作成し、作成された数字の最後にコンマを置くことができました。かなりの挑戦はとても現時点での私の出力は、私はそれがしたいしかし[スペース]で.txtファイルの数字のリストに参加する

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

ある,[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 

で区切って同じ行にそれらを取得する

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

私はWindows 10 64bitを持っています。どんな助けがありがとうされます

答えて

2

を私は別のbashとプレストこれを与えることにした長い休憩の後。

::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 

このコードは、開始番号、番号の量、番号の長さを決定し、, "

そしてScriptB連結し、一緒NumList.txtから, "と節約と各番号とそれらを結合:-)成功

最後に、スクリプトはNumGen.txtファイルを削除します。

3

echoそれを行うことはできません。しかしsetコマンドを使用してこの問題を回避するには、(AB)がある。

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

ありがとうStephan私はちょうどXDの周りの作業を使用してこれ(ab)を適用する問題が少しあります。あまりにも多くの問題がなければ、完全なスクリプトの例を追加できますか? – Jonas

+2

'' Stephan

1

ステファンは、SET/Pとの一つの解決策を持っています。もう1つの方法は、環境変数内に文字列全体を作成し、ループが終了した後に書き込む方法です。これははるかに高速ですが、最後の文字列の長さが〜8191バイトを超えると失敗します。

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

あなたがしたい場合は、不要な末尾の,を削除できます。

>>"%_Output%" ECHO.!str:~0,-2! 
関連する問題