2017-09-18 3 views
1

を変数を返すことができない私は、タイムスタンプ付きのディレクトリを作成する機能を持っていますが、私が作成したディレクトリを返すようにしようとしたとき、私はブランク値 を取得し、これは機能は、バッチファイル内の関数から

:createdatetime 
SETLOCAL ENABLEEXTENSIONS 
echo %1 
cd C:\somefolder 
set hh=%time:~-11,2% 
set /a hh=%hh%+100 
set hh=%hh:~1% 
set mydir=%date:~10,4%-%date:~4,2%-%date:~7,2%-%hh%-%time:~3,2%-%time:~6,2% 
set globalvar=try_%1_%mydir% 
mkdir try_%1_%mydir% 
set %~2=try_%1_%mydir% 
echo %globalvar% 
goto:eof 
です私はそれを コール呼び出していますどのようにこれは

:createdatetimeは%%私は エコー%VAR2% VAR2が、私が得るすべては、ディレクトリは私が行方不明です何を教えてください必要なフォルダ に作成されていてもブランク値です。 ヘルプの事前のお礼ありがとうございます

答えて

0

あなたの関数のgoto:eofは、終わりを意味します。

ローカル変数はそれから破棄されます。

変数を戻すには、明示的なendlocalコマンドと同じ行/コンテキストでsetコマンドを使用する必要があります。

:createdatetime 
SETLOCAL ENABLEEXTENSIONS 
echo %1 
cd C:\somefolder 
set hh=%time:~-11,2% 
set /a hh=%hh%+100 
set hh=%hh:~1% 
set mydir=%date:~10,4%-%date:~4,2%-%date:~7,2%-%hh%-%time:~3,2%-%time:~6,2% 
set globalvar=try_%1_%mydir% 
mkdir try_%1_%mydir% 
endlocal & set %~2=try_%1_%mydir% 
goto:eof 
+0

%var2%を!var2!に変更した後に作業しました。どうもありがとう –

関連する問題