これまでにバッチスクリプトを作成したことはありませんでしたが、学習プロセスに入りましたが...バッチが存在する場合は常にfalseを返します
ネットワークドライブを自動的にマップするスクリプトを作成しようとしています。フォルダが存在するかどうかを判断するためにif exist
ステートメントを含めました。しかし、たとえそれがあってもフォルダが存在しないかのように、if statement
をそのまま終了します。コマンドを個別に実行すると、そのコマンドは機能します(たとえば、if exist \\domain\folder\desired_folder (echo true) else (echo false)
は真となります)。それはif statements
を通過させ、else statement
ここで私は、それが最初if statement
に入ると、ドライブをマッピングする必要があるとの問題を抱えている私のコードがあるにまっすぐに行くように思える...任意の助けいただければ幸いです。
REM define %A and %B
SET totalname="net user %USERNAME% /domain | FIND /i "Full Name""
FOR /f "tokens=3-4 delims=, " %%A IN ('%totalname%') DO SET drivename=%%A_%%B
REM check if I drive folder exists
if exist "\\domain\folder\%%A_%%B" (
REM delete current I drive
REM map I drive
net use i: /delete
net use i: \\domain\folder\%drivename% /P:YES
) else if exist \\domain\folder\%USERNAME% (
net use i: /delete
net use i: \\domain\folder\%USERNAME% /P:YES
) else (
echo ERROR: File Not Found
echo ERROR: Unable to map I drive
REM for debugging purposes: %username% & %drivename% echo the desired result
echo username %USERNAME%
echo a_b %drivename%
pause
exit
)
あなたのコードが不完全である '%% A'と' %% B'はどこから来た、あなたは表示されません。 [mcve]を提供してください!恐らく、問題は[遅延拡張](http://ss64.com/nt/delayedexpansion.html)の不足に関連しています。また、空白やその他の特殊文字を含む場合には、 '' "の間にパスを入れてください。 – aschipfl
'%A'と '%B'を定義するのに次のコマンドを使用しています ' (%totalname%)DO SET drivename =%TO name = "%totalNAME%" DOユーザー名%/ドメイン| FIND/i "フルネーム" " と トークン= 3-4 delims = %A _ %% B' – cprmze
@aschipflありがとう、私は '%A'と'%B'をどこに追加しましたか?そして、私が得ようとしているパスにスペースや特殊文字はありませんが、違いがあるかどうかを確認する – cprmze