Posts Tagged ‘ Batch

Merge many file to single file on Windows

มีงานที่ต้องทำการ รวมไฟล์ .txt หลายๆไฟล์ เข้าเป็นไฟล์เดียวบน Windows สอบถาม อ.google แล้วก็ได้ solution ดังนี้ (ลอกมาทั้งดุ้น)

for /r %%a in (*.txt) do (
	copy/b merge.txt+"%%a" merge.txt
)

จากตัวอย่างเป็นการอ่านข้อมูล .txt ทั้งหมดใน Directory ปัจจุบันที่รันคำสั่ง และ เขียนไปเป็นไฟล์ใหม่ หรือ จะใช้แบบที่สองดังนี้

copy /a *.txt merge.txt

เป็นการ copy ไฟล์ .txt แล้วเขียนใหม่เป็นไฟล์ merge.txt
จากที่ทดลองดูใช้งานได้ดีเลยครับ เป็นการปิดงานไปอีกงานหนึ่ง ก็เลยมา Note ไว้เตือนความจำหน่อย
หมายเหตุ : เท่าที่รู้ถ้าใช้ Ubuntu นี่ง่ายมากๆเหมือนกัน เดียวจะลองหามาให้ดูที่หลังครับ

แหล่งข้อมูล
Batch File To Join Files Into One File

[C#]Run batch file in C#

หลังจากที่ผ่านงาน Run batch file in Java class มาแล้วก็มาคิดว่า ในเมื่อรันอยู่บน Windows ทำไมไม่ใช้ภาษา C# ซะละครับ เลยลองไปหาตัวอย่างการใช้งานของ C# มาดังนี้
1. รันโดยไม่สนใจผลการทำงาน

private void btnRun_Click(object sender, System.EventArgs e){
	System.Diagnostics.Process.Start(@"C:\MyBatch.bat");
}

2. รันโดยรอผลการทำงาน

private void btnRun_Click(object sender, System.EventArgs e){
	System.Diagnostics.ProcessStartInfo proInfo = new System.Diagnostics.ProcessStartInfo(@"C:\MyBatch.bat");
	proInfo.RedirectStandardOutput = true;
	proInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
	proInfo.UseShellExecute = false;
	
	System.Diagnostics.Process pro = System.Diagnostics.Process.Start(proInfo);
	System.IO.StreamReader strReader = pro.StandardOutput;
	pro.WaitForExit(2000);
	if(pro.HasExited){
		string output = strReader.ReadToEnd();
		Console.WriteLine(output);
	}
}

โอ้… ดูแล้วออกจะง่ายกว่า Java อยู่หลายช่วงตัว (Code ที่แสดง copy มาแค่บางส่วนเท่านั้น)
แหล่งข้อมูล
How can I run another application or batch file from my Visual C# .NET code?
How to execute a .bat file from a C# windows form app?

[Java]Run batch file in Java class

มีงานที่ต้องใช้ Java ไปรัน batch ไฟล์ ในเครื่อง Windows (class นี้รันภายใต้ Windows) จากการสืบเสาะหา และ ถามไถ่จาก อ.google แล้ว ก็ได้หนทางดังนี้

/**     
 * File Name : RuntimeExample.java
 * Create Date : Aug 22, 2010 13:20:26 PM
 */ 
package com.fun4station.batch;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**     
 * @author Supot Saelao
 * @version 1.0    
 */
public class RuntimeExample {

	public static void main(String[] args) {
		Process process = null;
		BufferedReader bufferRead = null;
		try{
			//If you don't want to see a window open
			//Runtime.getRuntime().exec("cmd /c start /MIN mybatch.bat");
			process = Runtime.getRuntime().exec("cmd /C mybatch.bat");
			bufferRead = new BufferedReader(new InputStreamReader(process.getInputStream()));
			
			String line = null;
			while ((line = bufferRead.readLine()) != null) {
				System.out.println(line);
			}
			
			if(process.exitValue() == 0){
				System.out.println("Command start mybatch.bat sucess...");
			}else{
				System.out.println("Command start mybatch.bat fail...");
			}
		}catch (Exception e){
			e.printStackTrace();
		}finally{
			try {
				process.destroy();
				bufferRead.close();
			} catch (IOException e) {}
		}
	}
}

แหล่งข้อมูล
How do I run a batch file from my Java Application?
Java Servlet – Running a batch file in Java.

การใช้ Batch Update กับ Prepared Statement

วิธีการบันทึกข้อมูลขนาดมากลงฐานข้อมูลโดยผ่าน Prepared Statement นั้นช่วยให้สามารถบันทึกข้อมูลได้เร็วกว่าการ Insert แบบธรรมดา สำหรับตัวอย่าง code เป็นดังนี้
1. สร้าง Class JavaBatch ดังนี้

/**
 * File Name : JavaBatch.java
 * Created Date : Nov 5, 2009 : 11:38:12 AM
 * http://www.secondknow.com
 */
package com.secondknow.test;

/**
 * @Author Supot Saelao 
 * @Version 1.0
 */
public class JavaBatch {
	private Connection conn = null;	
	public static void main(String[] args){
              //Implement code here
	}
}

2. สร้าง Method สำหรับ Connect Database

public void openConnection() {		
	try {
		Class.forName("com.mysql.jdbc.Driver");
		conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bach","root","java");
	} catch (ClassNotFoundException e) {
		e.printStackTrace();
	} catch (SQLException e) {
		e.printStackTrace();
	}		
}

Read more