web-dev-qa-db-ja.com

Windows CMDにはbashやtcshと同等のソースコマンドがありますか?

UNIXの世界では、.profileファイルまたは.cshrcファイルを編集する場合、source〜/ .profileまたはsource〜/ .cshrcを実行して、現在のセッションに効果を与えることができます。 Windowsのシステム変数を変更した場合、コマンドプロンプトセッションを終了して別のコマンドプロンプトセッションを開くことなく、現在のコマンドプロンプトセッションにどのように影響を与えることができますか?

29
mart2001

私は恐れていませんが、ドットソーシングをサポートしているPowershellの使用を開始できます。 powershellウィンドウは実際にはcmdに基づいているため、すべてのdosコマンドが引き続き機能し、新しいパワー、さらに多くのパワーが得られます。

6
johnshen64

通常のWindowsコマンドプロンプト(cmd.exeなど)では、call mybat.bat私が望んだことをした。設定したすべての環境変数を取得しました。

43
Eike

Dos Shellは、実行時に現在の環境で変数を作成する変数への割り当てのみを含む.batファイルをサポートします。

  c:> type EnvSetTest.bat
  set TESTXYZ=XYZ

  c:> .\EnvSetTest.bat

  c:> set | find "TESTX"
  TESTXYZ=XYZ
  c:>

IHTH。

13
shellter

次の例は、問題の解決に役立ちます。

env.batこのファイルは変数を設定するためのものです。その内容は一撃です。

set name="test3"

test.batメインバッチファイル。

call env.bat
call print.bat
pause

print.bat変数を出力するバッチファイル。以下の内容

echo %name%
4
Fathah Rehman P

これが機能することがわかった唯一の方法は、独自の構成ウィンドウから新しいcmdウィンドウを起動することです。例えば:

@echo off
echo Loading...
setlocal enabledelayedexpansion
call 1.cmd
call 2.bat
...
...
if "%LocalAppData%"=="" set LocalAppData=%UserProfile%\Local Settings\Application Data
SET BLAHNAME=FILE:%LocalAppData%\BLAH
call blah blah
cmd

最後のcmdは、目的の設定をコマンドウィンドウにエクスポートした新しいcmdプロンプトを起動します。

1
Ajay Gautam

いくつかの限定的なユースケースのための回避策があります。コマンドのファイルを読み込み、インラインで実行できます。たとえば、呼び出しコマンドファイルは次のようになります。

echo   OFF
SETLOCAL  ENABLEDELAYEDEXPANSION
     :
echo.         ----------------
echo.           set-up Java
echo.         ----------------
echo.
rem       call    %DEV_SCRIPTS%\setup-Java
for /F "tokens=*" %%A in ( %DEV_SCRIPTS%\setup-Java.bat ) do (
    %%A
)        
call    %DEV_SCRIPTS%\show-Java
     :

setup-Java.batファイルでは、%拡張を使用できません。 !;を使用する必要があります。例えば。:

    set  JRE_HOME=!JRE_08!
    rem        
    set  JRE_TARGET=!JRE_HOME!

したがって、テキストファイルからsource- ingコマンドを散らかしていることになります。この方法で、どのコマンドsourcedをテストする必要があります。いくつかの環境変数を設定するために、いくつかの試行を行いました。

コマンドプロセッサが最初にファイルをスキャンするため、ロジックやループを実行できるとは思いません。環境定義などの共有されたものを再利用するための簡単な回避策があれば大丈夫です。他のほとんどのものは、実際のsourceコマンドを必要としません(私は望んでいます)。幸運を。

0
will