2021年6月11日金曜日

deno.Runでダブルクォーテーションを使用できない件

先日も色々と試行錯誤しましたが、目的によってはシンプルな方法で解決する方法もありました。
dirコマンドにPathを渡したい場合はカレントディレクトリを指定すればOK。



パラメータだけ変えて同じコマンドを複数回実行したい場合、パラメータまでバッチファイルに記入してしまうと毎回バッチファイルを出力しなければいけなくなってしまいますが、以下のような方法でも問題なく動作しました。
async function 空いてるport番号を返す(): Promise<number>{
let pathBat = await 一時ファイルを作成('netstat -na | find "%~1"')
for(let port=49152; port<=65535 ;port++){
const p = Deno.run({cmd:['cmd', '/C', 'chcp 65001 & '+pathBat+' ' + port], stdout:'piped'})
const o = await p.output()
const text = new TextDecoder().decode(o)
if(text.indexOf(':'+port)==-1){
Deno.remove(pathBat)
return port
}
}
throw new Error('throw from port num search')
}
async function 一時ファイルを作成(value:string){
const path = await Deno.makeTempFile({prefix: 'deno_tmp', suffix:'.bat'})
await Deno.writeTextFile(path, value)
return path
}
const port = await 空いてるport番号を返す()
console.log(port)
view raw deno_bat.ts hosted with ❤ by GitHub

0 件のコメント:

コメントを投稿