2015-10-22 2 views
1

Здравствуйте stackoverflowers,открыт путь UNC с пробелами в Windows Explorer, с Perl

я боюсь, что я не могу понять, как открыть путь UNC с пробелами внутри проводника Windows в Perl. Назначение: я хочу, чтобы пользователь помещал файл в путь. Чтобы сделать его более удобным, путь должен автоматически открываться в проводнике. Что он делает для любых локальных дисков.

путь UNC, который должен открыть это: \\ srvr1 \ среднее пространство реж

Мой код до сих пор:

use strict 
use warnings 

my $sourceDir = "\\\\srvr1\\mean space dir"; 
system("start $sourceDir"); 

Что дает ошибку: «Win не может получить доступ к \\ srvr1 \ имею в виду." Итак, я попытался процитировать строку:

my $sourceDir = "\\\\srvr1\\\"mean space dir\""; 

, которые приводят к: «Win не может получить доступ к \\ srvr1 \» означает пространство реж «»

Следующая вещь, которую я попытался было:

my $sourceDir = q{"\\\srvr1\\mean space dir"} 

которые приводят к CMD окно открывается с правильного пути в названии ?!

Возможно, системный вызов является неправильным? Я очень ценю любую помощь. Благодарю.

ответ

3

Вторая форма верна, но тогда вы должны учитывать тот факт, что команда start рассматривает свой первый цитируемый аргумент как заголовок окна. Если вы хотите указать start цитируемый путь, вам также нужно указать аргумент заголовка окна (пустая строка в порядке).

Как так:

my $sourceDir = q{\\\\srvr1\\mean space dir}; 
system(qq{start "" "$sourceDir"}); 
+0

работает отлично. Я прочитал о названии окна и попробовал, но не со второй формой, я думаю. Спасибо! – OneK

1

Для такого рода вещей системного вызова стиля массива хорошо подходит. Вам не нужно беспокоиться о том, чтобы процитировать путь или ускользнуть.

$path = '\\\\srvr1\mean space dir'; 
system('start', '', $path); 

Цитирование (или забывая цитату) пути в системных вызовах является существенным источником ошибок, где я работал. Привычка делать это как выше означает, что вам никогда не нужно беспокоиться об этом.

+0

Это еще более удобно и, по крайней мере, для меня, более читаемо. – OneK

Смежные вопросы