16

私はappjs *を使用しており、フォルダーを開くコマンドを実行したいと考えています。

私が持っているもの

var path = __dirname + '/folder to open/'; 
// path = C:\Program Files\myapplication/folder to open/
require("child_process").exec("start " + path);

エラー

ファイル C:\Program が見つかりませんでした

私が試したこと

私はすでにスペースをエスケープしようとしましたが、うまくいきませんでした。

var path = __dirname + '/folder to open/'; 
path = path.replace(' ', '\ ');
// path = C:\Program Files\myapplication/folder to open/
require("child_process").exec("start " + path);

パスを引用符で囲むと、フォルダーは開かれず、別のプロンプトのみが表示されます。

var path = "\"" + __dirname + "/folder to open/\"";
path = path.replace(' ', '\ ');
// path = "C:\Program Files\myapplication/folder to open/"
require("child_process").exec("start " + path);

関連バグhttps://github.com/isaacs/npm/pull/2479

誰かが修正または回避策を持っていますか?

※リンクは削除しました

4

4 に答える 4

17

スペースを含まないパスを開くには、二重のバックスラッシュに置き換える必要があります。

あなたのコードでは、スペース文字をエスケープしました:

"\ "

バックスラッシュ文字をエスケープして、出力文字列にする必要があります。

"\\ "

これを試して:

var path = __dirname + '/folder to open/'; 

// Notice the double-backslashes on this following line
path = path.replace(/ /g, '\\ ');

require("child_process").exec("start " + path);
于 2014-11-18T15:50:15.633 に答える
5

さて、私はそれを修正しました。

またはそのようなもの。

使用する代わりに

"start " + path

使った

"%SystemRoot%\\explorer.exe \"" + path + "\""

引用符とスラッシュに注意してください。

于 2013-05-06T14:06:48.850 に答える
0

また、パスごとに旧式の最大 8 文字/スペースなしの名前を使用することもできます。

私がいつも使用していたのは、英語のシステムでのみ機能しますが、c:\PROGRA~1の代わりに常にコーディングしていました。c:\Program Files

より多くの文字を含むパスの最初の8文字が一意である場合、次のようなことができると思いますnewPath = origPath.sub(/\W/g, '').substr(0, 6) + "~1"

ここにはWindowsシステムはありません。メモリだけを見てください。

于 2021-01-07T19:48:31.313 に答える