ラベル Script の投稿を表示しています。 すべての投稿を表示
ラベル Script の投稿を表示しています。 すべての投稿を表示

2017年11月29日水曜日

バッチで自身のパスに移動する

バッチファイル自身のパスに移動する理由


バッチファイルをダブルクリックで実行した場合には、バッチファイルのパスがカレントディレクトリになります。
しかし、コマンドラインから実行した場合には、実行場所がカレントディレクトリになってしまいます。

基本的には、問題ないのですが、
バッチファイルから相対パスにあるバッチファイルを呼び出す場合には、自分自身の場所を知っておく必要があります。

コマンド

cd %~dp0

※cd コマンドで /dを追加するとドライブの移動も可能。
cd /d %~dp0

説明


「%0」や「%1」・・・には、引数が渡されています。その中で、「%0」はバッチファイル自身のパスが含まれています。

「~」チルダは、そのパスの「”」ダブルクォーテーションを取り除きます。
「d」は、ドライブ名「C:\」を表示します。
「p」は、パス名を表示します。

2016年8月31日水曜日

WindowsでのScriptで配列を利用(Powershell,VBS)

前回、バッチファイルで配列もどきを書いてみました。
書けることは書けたのですが、ものすごく面倒だったので、
Windows標準で使用できるスクリプトで書き直してみました。


VBSでの配列

Option Explicit
Dim values
Dim index
values = Array("value0", "value1", "value2", "value3", "value4")
For index = LBound(values) To UBound(values)
    WScript.Echo values(index)
Next


PowerShellでの配列

$values = @("value0","value1","value2","value3","value4")
for ($i = 0; $i -lt $values.Length; $i++) {
    Write-Host($values[$i])
}

バッチでの配列

@echo off
set key[0]="value0"
set key[1]="value1"
set key[2]="value2"
set key[3]="value3"
set key[4]="value4"
for /L %%i in (0,1,4) do (
call echo %%key[%%i]%%
)


PowerShellは、あまり詳しく知りませんが、一番簡単に書けるかも。
ちなみに、googleのWebサーバーに、ファイルをアップロードしたところ、
batとvbsは、エラーになりましたが、ps1は大丈夫でした。