2016-06-28 8 views
2

私は動作していたWindowsバッチファイルを持っていますが、ラップトップを変更してから失敗します。のファイル名。バッチファイル

私のファイルパスにはポイント(。)があると思いますが、この問題を回避する方法はありませんでした。

私は基本的に私のバッチファイルにファイル名を渡すと、それはそれを処理してみましょうが、それはそれはファイルからの行の読み取りを開始したときに失敗します。

file "D:\Dropbox (Some-Name)\3. MB_Kode\mbInfoSelHandler\mbcode\InfoSelHandler.mbp" is a MapBasic Project File (*.mbp) 
Looping MBP 
\3. was unexpected at this time. 

echo MBP File: %1 
rem Check that the file is a MapBasic Project File 
if /I "%~sx1" NEQ ".mbp" (
    echo Error: file %~dpnx1 is not a MapBasic Project File ^(^*.mbp^) 
    goto :EOF 
) else (
    echo file %1 is a MapBasic Project File ^(^*.mbp^) 
) 

echo Looping MBP 
for /f "usebackq skip=1 delims== tokens=2" %%j in (%1) do (
    echo Checking input file from MBP 
    echo j: %%j 
    SET filemb=%~dp1%%j 
    .... 

出力は次のようになります

012:

あなたが最後echo'edテキストを見ることができるように、ファイルがこれらのような行が含まれていLooping MBP

です

[LINK] 
Application=..\InfoSelHandler.mbx 
Module=Library\ARRAYLib.mbo 
Module=Library\CONFIGFILELib.mbo 
Module=Library\DEBUGLib.mbo 

私は、この行に問題があると仮定しているが、私はよく分からない:

for /f "usebackq skip=1 delims== tokens=2" %%j in (%1) do (

任意のヒントは?

+0

にコードを変更する必要があります – jeb

答えて

3

引用符を常に使用する理由をもう少し説明してください。

あなたは、それはそれはあなたが構文エラーを取得する引用符で囲むpropper wihout使用する場合、パスは
C:\Program and files (x86)\Tools&Help\bla.txt

のように、あなたが困っている括弧やアンパサンドが含まれています。

簡体コード

for /f "usebackq" %%j in (%1) do (
    SET var=%~dp1 
) 

FOR /F自体は限り%1は引用符で囲まれたが、彼らが欠落しているとき、それが失敗しているとして、働きます。 FORブロックはx86)の閉じ括弧がFORブロックを閉じ

set var=C:\Program and files (x86)\Tools&Help\bla.txt 

に解析され、\Tools&Help\bla.txtがブロックの外にあると、構文エラーを作成したとき、それが拡大していますよう

しかしSET var=%~dp1休憩コード、 。あなたのケースでは

 
    for /f "usebackq" %%j in (%1) do (
     SET var=C:\Program and files (x86)\Tools&Help\bla.txt 
    ) 

、あなたは

for /f "usebackq skip=1 delims== tokens=2" %%j in ("%~1") do (
    echo Checking input file from MBP 
    echo j: %%j 
    SET "filemb=%~dp1%%j" 
) 
+0

は、それがfilemb中= "%〜DP1の%% jの" 設定しないでください '' "%〜DP1" を引用符を追加します。 SETの代わりに "filemb =%〜dp1 %% j"?私が引用文を右側にあるテキストの周りだけに移動したことに注目してください。@ –

+1

@PeterHorsbøllMøllerいいえ、いくつかの文字に問題が発生するのを避けるためにSETコマンド 'SET" var = content "スペース。コンテンツを保護しますが、内容に引用符を追加しません。SETファイルの "%〜dp1 %% j"を引用符で囲みます。 – jeb

+0

ありがとう、@jeb。私はバッチスクリプトの世界について多くのことを学ぶ必要があります:-) –

関連する問題