チャーリーのIT日記

趣味でシステムの構築や検証などしたものを 記録しておこうと思いブログをはじめました。 個人的な記事なので、間違えていることもあるかと思いますので、ご了承ください。

子シェル(sub.sh)
-------------
a=123
-------------

親シェル(test.sh)
-------------
./sub.sh
echo $a
-------------

これだと、親シェルの$a に 123 がセットされない。
そこでsourceを使って呼び出す

親シェル(test.sh)
-------------
source ./sub.sh
echo $a
-------------
こうすると、親シェルの$a に 123 がセットされる。

sourceは、現シェルのプロセスでシェルを実行するコマンドのようです。

Windowsバッチのサンプル

〇IF文のサンプル
基本的な構文
IF %変数%=="123"  (
  echo "OK"
)

判定式のサンプル
・フォルダ存在確認・・・EXIST C:\test.txt 
・同じではない・・・・・%変数% != "123"
・数値判定(変数=1)・・・"変数" equ 1
・数値判定(変数<>1)・・・"変数" neq 1
・数値判定(変数>1)・・・"変数" gtr 1
・数値判定(変数>=1)・・・"変数" geq 1
・数値判定(変数<1)・・・"変数" lss 1
・数値判定(変数<=1)・・・"変数" leq 1


変数を使ったIFを入れ子(ネスト)したいとき
※CALLで読んで、exit /bで戻るようにする。
サンプル
SET AAA="123"
IF %AAA%=="123" (
  CALL :SUB01
)
exit
:SUB01
SET BBB="ABC"
IF %BBB%=="ABC" (
 echo "OK"
)
exit /b

〇フォルダ強制削除
rmdir /s /q フォルダ

〇ファイル強制削除
del /f ファイル

〇ファイル数カウント
dir /B c:\test\*.txt | find /c /v ""
 
〇コマンドの実行結果を変数にセット
for /f "usebackq" %%A in (dir /B c:\test\*.txt ^| find /c /v "") do set RET=%%A
echo %RET%

※| はエスケープさせる必要があるので、前に^をつける

〇パス、ファイルの取得方法
例)<変数>が、C:\test\aaa.txtの場合
%~d<変数>・・・ドライブ文字列   例)C:
%~p<変数>・・・ドライブ以下のパス 例)\test\
%~n<変数>・・・ファイル名     例)aaa
%~x<変数>・・・拡張子       例)txt
%~f<変数>・・・ファイルパス    例)C:\test\aaa.txt
※変数は1文字のみ使用できる



自宅からVPN接続して仕事する際に、VPN接続してから起動してほしいものが
勝手に自動起動してしまうので、毎回、閉じてからVPN接続して手動で起動してましたが、
手間だったので少し調べました。いくつか方法がありますね

1.エクスプローラで、以下のフォルダにプログラムのショトカット等がある
  C:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
   ※AppDataは隠しフォルダなので、手で入力する必要がある

2.タスクマネージャの「スタートアップ」タブで、「有効」「無効」を設定

3.タスクスケジューラのタスクで、トリガーが「ログオン時」のもの


↑このページのトップヘ