Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Не создается file.bat в windows, на диске С посредством Java.


(Руслан Лизогуб) #1

Добрый день.
Не могу создать .bat файл на диске C:, на D все работает отлично.
Я админ хоста, вручную все создается но через скрипт не желает.
Просьба подсказать как решить данную загвоздку.
Вот способ создания:

public class StartApplication {
	public void start(){
		FileWorker batFile = new FileWorker();
		String text = "C:" + "\n" + "cd \"C:\\Program Files (x86)\\Program\"" + "\n" + "\"C:\\Program Files (x86)\\Program\\Wpf.exe\" /max";
		String patch = "D:start.bat";
		batFile.setPatchToBatFile(patch);
		batFile.setTextToBatFile(text);
		batFile.CreateBatFile();
		
		try {
			Runtime.getRuntime().exec("cmd /c start D:/start.bat ");
		} catch (IOException e) {
			System.out.println("IOException: " + e.getMessage());
		}
	}
}

(vmaximv) #2

Давайте я немного отредактирую ваш код, что бы вам стало понятно как его видят другие посетители этого форума:

public class StartApplication {
	public void start(){
		?????????? batFile = new ??????????();
		String text = "C:" + "\n" + "cd \"C:\\Program Files (x86)\\Program\"" + "\n" + "\"C:\\Program Files (x86)\\Program\\Wpf.exe\" /max";
		String patch = "D:start.bat";
		batFile.?????????????(patch);
		batFile.??????????????(text);
		batFile.????????????();
		
		try {
			Runtime.getRuntime().exec("cmd /c start D:/start.bat ");
		} catch (IOException e) {
			System.out.println("IOException: " + e.getMessage());
		}
	}
}

ЗЫ: клавиша с буквой С - самая коварная клавиша на клавиатурах с кириллицей


(apetrovskiy) #3

Два варианта приходят в голову (зависит от того, какая операционка). Если это 2008+/7+, то:

  1. если вы запускаете программно в нулевой сессии, ваш батник, скорее всего, не отрабатывает
  2. FSRM/File screening - ваш батник залочен операционкой (см. свойства файла батника).

(Funker) #4

а пробовали смену диска? командой типа

cmd /c cd /D D:\ start D:/start.bat

(Sergey Korol) #5

Немного перефразировав, вам невольно намекнули, что экстрасенсорных способностей для определения содержимого FileWorker у пользователей данного комьюнити нет.

Если хотите, чтобы вам помогли, постите весь код. :wink:


(Руслан Лизогуб) #6

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

public static void main(String[] args) {
		File myPath = new File("%APPDATAaa%\\Automation\\ss\\");
		myPath.mkdirs();
}

Так как все остальные варианты уж очень извратные, для хранения нескольких батничков сойдет:)


(Руслан Лизогуб) #7

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


(Funker) #8

может так?

cd /D %APPDATAaa%\Automation\ss\  start start.bat

(Руслан Лизогуб) #9

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