うならぼ

どうも。

ズンドコキヨシに移動するバッチファイル

記事を書いてるうちに二番煎じとしてもしょぼいなーと思えてきたのでQiitaじゃなくてこっちに書くことに。簡単に言うと、ズンズンズンズンドコが揃ったらキ・ヨ・シ!って出力するあれです。先行研究は以下を参照。

qiita.com

@echo off
if not exist ズン mklink /j ズン .
if not exist ドコ mklink /j ドコ .
if not exist キ・ヨ・シ! mklink /j キ・ヨ・シ! .

:reset
cd %~dp0

:loop
(if %random% geq 16384 (cd ズン) else (cd ドコ)) 2>nul || goto :reset
cd | find "ズン\ズン\ズン\ズン\ドコ" > nul || goto :loop

cd キ・ヨ・シ! 2>nul || goto :reset

文字列として出力する代わりに、カレントディレクトリを移動しています。

f:id:unarist:20160504195538p:plain

終わった後で explorer . とやればエクスプローラでも開ける。

f:id:unarist:20160504195545p:plain

ジャンクションを使っているので、実際にそこまで深いディレクトリ構造が作成されるわけではありません。が、だからどうということもあまりないです。

その関係であまりに階層が深くなるとcdがエラーを吐くので、そういう時は最初からやり直します。これはファイルパスの文字数制限とは別の話で、ひとつのパスの中に reparse point は31個までしか含むことができないという制限によるもの。

と作ってはみたものの、出力が違うだけでバッチファイル自体の構造は他と変わらない。どうせファイルシステムを使うなら、仮想ファイルシステムで「ズン」「ドコ」ディレクトリを自由に開いていくと条件を満たしたところで「キ・ヨ・シ!」が現れるとかやりたい。シェル名前空間拡張かなー。