Как я могу загрузить содержание текстового файла в переменную пакетного файла?

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

Например, ниже - класс ученика, который будет использовать его в нашем коде.

public class Student {

    private int id;

    public int getId() {
        return this.id;
    }

    public setId(int newId) {
        this.id = newId;
    }
}

Приведенный ниже код дает вам исключение с нулевым указателем.

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}

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

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student = new Student();
            obj_Student.setId(12);
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}
32
задан Ross Ridge 24 November 2014 в 23:12
поделиться

4 ответа

Используйте for, что-то вроде:

set content=
for /f "delims=" %%i in ('filename') do set content=%content% %%i

, Возможно, you’ll должны сделать setlocal enabledelayedexpansion и/или использование !content!, а не %content%. Я тест can’t, как я, don’t имеют любой MS Windows поблизости (и я желаю Вам того же:-).

лучший batch-file-black-magic-reference, о котором я знаю, - в http://www.rsdn.ru/article/winshell/batanyca.xml . Если Вы, don’t знают русский язык, Вы все еще, могли бы некоторые использовать обеспеченные фрагменты кода.

16
ответ дан 27 November 2019 в 20:21
поделиться

Можно использовать:

set content=
for /f "delims=" %%i in ('type text.txt') do set content=!content! %%i
2
ответ дан 27 November 2019 в 20:21
поделиться

Можно ли определить последующую обработку?

можно использовать, чтобы цикл почти сделал это, но нет никакого простого способа вставить CR/LF в переменную среды, таким образом, у Вас будет все в одной строке. (можно быть в состоянии работать вокруг этого в зависимости от того, что необходимо сделать.)

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

предложение счета для цикла, вероятно, в чем Вы нуждаетесь. Вы обрабатываете файл одна строка за один раз:

(использование %i в командной строке %%i в пакетном файле)

for /f "tokens=1 delims=" %%i in (file.txt) do echo %%i

более усовершенствованный:

for /f "tokens=1 delims=" %%i in (file.txt) do call :part2 %%i
goto :fin

:part2
echo %1
::do further processing here
goto :eof

:fin
2
ответ дан 27 November 2019 в 20:21
поделиться

Создайте файл под названием "SetFile.bat", который содержит следующую строку с никакой возврат каретки в конце его...

set FileContents=

Тогда в Вашем пакетном файле делают что-то вроде этого...

   @echo off
   copy SetFile.bat + %1 $tmp$.bat > nul
   call $tmp$.bat
   del $tmp$.bat

%1 название Вашего входного файла, и %FileContents % будет содержать содержание входного файла после вызова. Это будет только работать над одним файлом строки хотя (т.е. файлом, содержащим возвраты каретки). Вы могли разделить/заменять возвраты каретки из файла прежде, чем назвать %tmp%.bat в случае необходимости.

0
ответ дан 27 November 2019 в 20:21
поделиться
Другие вопросы по тегам:

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