Пробелы в Java выполняют путь для OS X

Создайте базовый уровень Azure SQL Database Basic (например, он стоит 5 долларов в месяц, вы также можете создать бесплатный, доступный на год) со всеми объектами, необходимыми в базе данных, которые вы можете копировать асинхронно с помощью следующего оператора ниже или используя PowerShell.

CREATE DATABASE db_copy   
    AS COPY OF ozabzw7545.db_original ( SERVICE_OBJECTIVE = 'P2' );

После этого вы можете отслеживать, когда копирование заканчивается с помощью следующей инструкции:

   Select
     [sys].[databases].[name], 
       [sys].[databases].[state_desc], 
       [sys].[dm_database_copies].[start_date], 
       [sys].[dm_database_copies].[modify_date], 
       [sys].[dm_database_copies].[percent_complete],
             [sys].[dm_database_copies].[error_code], 
       [sys].[dm_database_copies].[error_desc], 
       [sys].[dm_database_copies].[error_severity], 
       [sys].[dm_database_copies].[error_state]
   From
      [sys].[databases]
   Left
 Outer
 Join
 [sys].[dm_database_copies] 
   On
    [sys].[databases].[database_id] = [sys].[dm_database_copies].[database_id]
   Where
   [sys].[databases].[name] = 'db_copy'
9
задан Glenn 30 March 2009 в 15:16
поделиться

3 ответа

Существует сводка этой проблемы на форумах Sun..., кажется, довольно распространенная проблема, не ограниченная OS X.

Последнее сообщение в потоке суммирует предлагаемое решение. В сущности используйте форму Runtime.exec это берет a String[] массив:

String[] args = new String[] { "open", "\"/folder name/toast.sh\"" }; 

или (форум предлагает, это будет работать также),

String[] args = new String[] { "open", "folder name/toast.sh" };
12
ответ дан 4 December 2019 в 15:26
поделиться

Попробуйте это:

Runtime.getRuntime().exec("open /folder\\ name/toast.sh");

"\" просто поместит пространство в строку, но "\" поместит "\" в строку, которая будет передана оболочке, и оболочка выйдет из пространства.

Если это не работает, передача в аргументах как массив, один элемент для каждого аргумента. Тем путем оболочка не принимает участие, и Вам не нужны причудливые Escape.

Runtime.getRuntime().exec(new String[]{"open", "/folder name/toast.sh"});
1
ответ дан 4 December 2019 в 15:26
поделиться

Параметр Пола работает, но вы все равно должны избегать пробелов, например так:

Runtime.getRuntime().exec(new String[]{"open", "/folder\\ name/toast.sh"});

Отстойное использование массива String состоит в том, что каждый параметр и его параметр должны быть в своем собственном элементе. Например, вы не можете сделать это:

Runtime.getRuntime().exec(new String[]{"executable", "-r -x 1", "/folder\\ name/somefile"});

Но вместо этого вы должны указать это так:

Runtime.getRuntime().exec(new String[]{"executable", "-r", "-x", "1", "/folder\\ name/somefile"});
0
ответ дан 4 December 2019 в 15:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: