Отправьте текст в стандартный вход приложения консоли Windows

Я пытаюсь записать .bat файл для автоматизации некоторых команд оболочки. Большинство команд легко, и я могу просто поместить их в пакетный файл непосредственно, но существует одна команда, которую вместо того, чтобы брать параметры командной строки, ожидает, что Вы введете в опциях, Вы хотите использовать "стандартный вход". Я не абсолютно уверен, что это означает. Кто-то может сказать мне, как сделать это? Текст я хотел бы быть введенным, является содержанием одного из файлов в каталоге: "options.txt", который я хочу связать с переменной в пакетном файле "$ (additionaloptions)".

Иметь смысл?

5
задан skb 15 January 2010 в 23:19
поделиться

1 ответ

newtype NonNegative a = NonNegative a

toNonNegative :: (Num a, Ord a) => a -> NonNegative a
toNonNegative x
  | x < 0 = error "Only non-negative values are allowed."
  | otherwise = NonNegative x

fromNonNegative :: NonNegative a -> a
fromNonNegative (NonNegative x) = x

Будьте осторожны, чтобы не использовать конструктор NonNegative напрямую. Это будет проще, если поместить его в отдельный модуль и не экспортировать.

Теперь можно использовать (отображение в NonNegative) для ленивого преобразования списка чисел.

Для этого по-прежнему потребуется проверка во время выполнения, где бы вы ни вводили необработанные номера.

Также можно использовать Data.Word.

-121--3632241-

Возвращаемое значение оператора = () не может быть использовано, как вы пытались продемонстрировать. Если вы думаете о перегруженном операторе как о собственной функции, это может иметь больше смысла.

Например:

int main() {
  myObject obj, obj2;
  obj.isNumber = true;
  obj.numVal = 17.5;
  obj2.operator=(obj); // equivalent to obj2 = obj
}

Причина number = obj; не работает, потому что вы определили myObject:: operator = () , тогда как number будет использовать double:: operator = () (хорошо, технически нет double:: operator = () , поскольку это фундаментальный тип, а не

Интересно отметить, что эта функция ведет себя как любая другая функция в том, что возвращаемое значение ( return right.numval; ) игнорируется, когда оно не используется. Однако возвращаемое значение может быть назначено или использовано подобно возвращаемому значению любой другой функции, поэтому, если вы действительно хотите, вы могли бы сделать что-то подобное:

int main() {
  myObject obj, obj2;
  obj.isNumber = true;
  obj.numVal = 17.5;
  double number;
  // number = obj; still won't work.
  number = obj2 = obj; // equivalent to number = obj2.operator=(obj)
}

Это только так полезно. Как уже упоминалось, при попытке присвоения объектов myObject фундаментальным типам необходимо обратиться к операторам преобразования .

-121--4571534-

Обычный способ сделать это в файлах .bat - использовать эхо для записи небольшого текстового файла, а затем перенаправить текстовый файл в стандартный файл команды.

@echo foo > bar.txt
@echo if you need multiple lines >> bar.txt

the_cmd < bar.txt

В вашем конкретном примере это будет что-то вроде

copy myfile.txt bar.txt
@echo %variable% >> bar.txt

Тот факт, что вы упоминаете $ (переменная), подсказывает мне, что это make-файл, а не пакетный файл. для makefile, это лучший способ.

7
ответ дан 14 December 2019 в 08:51
поделиться
Другие вопросы по тегам:

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