2017-08-22 23 views

答えて

3

"Array"はバッチではありませんが、まだいくつかのメソッドを使用してエミュレートできます。


基本的な考え方

基本的な考え方はArray[0]Array[1]、などのようにそれらを、次の番号のIDと、変数を持っているということです...


コマンド出力

を取得

FOR /Fは、節が('command')と指定されたときにコマンド出力を取得できます。ここでは例です:

変数

として出力を設定する

for /f %%G in ('dir *.txt /b') do echo %%~G 

は単にsetコマンドを使用します。

for /f %%G in ('dir *.txt /b') do set result=%%~G 

resultは、新しいファイル名で上書きされているので、これが最後のテキストファイルを提供します。

setlocal enableDelayedExpansion 
set /a count=0 

for /f %%G in ('dir *.txt /b') do (
    set /a count+=1 
    set fileName[!count!]=%%~G 
) 

set fileName 

これは、ファイルをループエミュレートされた配列にFoo.txt,Bar.txt,Baz.txt

setlocal enableDelayedExpansion 
for /f %%G in ('dir *.txt /b') do set result=!result!,%%~G 

の取得結果およびすべてが自分の名前をファイル与える:

このスクリプトでは、このような結果が得られます。 SET fileNameは、fileNameで始まるすべての変数を返します。

1

あなたは、このバッチファイルのために試してみることができます:Windowsのパスで1)どういうわけか、スラッシュの作品:

@echo off 
Title Populate Array with filenames and show them 
set "MasterFolder=%userprofile%\desktop" 
Set LogFile=%~dpn0.txt 
If exist "%LogFile%" Del "%LogFile%" 
REM Iterates throw all text files on %MasterFolder% and its subfolders. 
REM And Populate the array with existent files in this folder and its subfolders 
echo  Please wait a while ... We populate the array with filesNames ... 
SetLocal EnableDelayedexpansion 
@FOR /f "delims=" %%f IN ('dir /b /s "%MasterFolder%\*.txt"') DO (
    set /a "idx+=1" 
    set "FileName[!idx!]=%%~nxf" 
    set "FilePath[!idx!]=%%~dpFf" 
) 

rem Display array elements 
for /L %%i in (1,1,%idx%) do (
    echo [%%i] "!FileName[%%i]!" 
    ( 
     echo([%%i] "!FileName[%%i]!" 
     echo Path : "!FilePath[%%i]!" 
     echo ************************************ 
    )>> "%LogFile%" 
) 
ECHO(
ECHO Total text files(s) : !idx! 
TimeOut /T 10 /nobreak>nul 
Start "" "%LogFile%" 
+0

私は、私にとって非常に奇妙に見える2つのビットを発見しました。 2)なぜあなたは 'con'が必要なのか理解できませんでした。このスクリプトは '> con'を使わなくても動作します。 – SteveFest

+0

@SteveFest私はそれを編集する! – Hackoo

+0

しかし、 '/'と '\\ 'はどちらも動作します、なぜですか? – SteveFest

関連する問題