2016-10-10 11 views
2

ディレクトリリスト全体を変数に格納し、その変数をパラメータとして別のスクリプトに渡す必要があります。直接またはdirの出力をテキストファイルに保存してから次のようにします。バッチ - dirコマンドの出力を変数ディレクトリリストに格納

dir \path\todir > temp.txt 
set /p VAR=<temp.txt 

ただし、上記の行は1行しか読みません。助けてもらえますか?

+0

変数が一つだけのラインを持っています。 –

+2

'set/P'はリダイレクトまたはパイプ入力の最初の行を読み込みます。 [/ syntax](/http://ss64.com/nt/for_F.html)ループのために必要なすべての行を読み込み、[some syntax hack]で改行を生成することによって各読み込み行を個別に連結します。 (http://ss64.com/nt/findstr-linebreaks.html);環境変数の全長は8190バイトに制限されていることに注意してください(XP以降のWindows版以降のもの)。しかし、すべての行を変数に格納することが本当に必要かどうか、もっと簡単で便利な方法があるのか​​どうか、自分自身に尋ねてみてください。 – aschipfl

+1

@achipflのように:他のスクリプトはouput od 'DIR'で何をしますか? – SachaDee

答えて

0

最終目標に関するその他の情報は提供していないため、

私はperhapesは、このコードのような配列を簡単に変数を格納するためにあなたのアイデアを与える何かを投稿:

@echo off 
set "folder=%userprofile%\Desktop" 
setLocal EnableDelayedExpansion 
REM Populate the array with existent sub-folders in this folder 
for /f "tokens=* delims= " %%a in ('Dir /b /a:d "%folder%"') do (
    set /a N+=1 
    set "Folder[!N!]=%%a" 
) 
Rem Populate the array with existent files in this folder 
for /f "tokens=* delims= " %%a in ('Dir /b /a:-d "%folder%"') do (
    set /a M+=1 
    set "File[!M!]=%%a" 
) 
::***************************************************************** 
:Display_Folders 
cls & color 0E 
echo Just showing only Folders : 
echo(
For /L %%i in (1,1,%N%) do (
    echo Folder[%%i] = !Folder[%%i]! 
) 
echo(
echo Hit any key to show only files : 
pause>nul 
::***************************************************************** 
:Display_Files 
cls & color 0B 
echo Just showing only Files : 
echo(
For /L %%j in (1,1,%M%) do (
    echo File[%%j] = !File[%%j]! 
) 
echo(
echo Hit any key to exit : 
Pause>nul & exit 
関連する問題