のWindowsネイティブの代替ln -s
はmklink
.
のネイティブな代替手段はありreadlink
ますか? または、ファイルがシンボリックリンクかどうかをネイティブに識別する方法は?
に直接相当するツールはないと思いますreadlink
。dir
ただし、アイテムがシンボリックリンクであるかどうかの出力で確認できるため、コマンドラインまたはスクリプトでこれを判断できます。
次のような構文を使用して、特定のファイルがシンボリックリンクであるかどうかを非常に簡単にテストできます。
dir mysymlink | find "<SYMLINK>" >NUL
if not errorlevel 1 echo. It's a symlink!
エラーレベルは、「」が見つかった場合は0になり、それ以外の<SYMLINK>
場合は1になります。
シンボリックリンクの実際のターゲットを決定することは別の問題であり、私の意見ではそれほど単純ではありません。の出力は次のdir mysymlink | find "<SYMLINK>"
ようになります
11/13/2012 12:53 AM <SYMLINK> mysymlink [C:\Windows\Temp\somefile.txt]
これを解析することはできますが、一部の文字では1つの変数ですべてを処理するのが難しいため、一時ファイルを処理する方が簡単であることがわかりました。
dir mysymlink | find "<SYMLINK>" > temp.txt
for /f "tokens=6" %i in (temp.txt) do @echo %i
これにより、のような出力が得られます[C:\Windows\Temp\somefile.txt]
。(バッチスクリプト内で使用することを忘れないでください%%i
。上記はコマンドプロンプトからのものです。)
角かっこなしで結果を得るには、次のようにします。
dir mysymlink | find "<SYMLINK>" > temp.txt
for /f "tokens=6" %i in (temp.txt) do set answer=%i
echo %answer:~1,-1%
変数%answer%
には角かっこ付きの結果が含まれているため%answer:~1,-1%
、最初または最後の文字なしの結果も含まれます。