Java批处理不';不能很好地执行执行php应用程序的.bat文件
我有个奇怪的问题。我创建了一个PHP应用程序,可以读取文件,然后移动到另一个目录。当我运行应用程序时,它工作正常 现在,我在java上创建了一个守护进程,它运行一个运行php脚本的.bat文件 My.bat是“invoker.bat”: 我的java守护进程如下:Java批处理不';不能很好地执行执行php应用程序的.bat文件,java,php,daemon,Java,Php,Daemon,我有个奇怪的问题。我创建了一个PHP应用程序,可以读取文件,然后移动到另一个目录。当我运行应用程序时,它工作正常 现在,我在java上创建了一个守护进程,它运行一个运行php脚本的.bat文件 My.bat是“invoker.bat”: 我的java守护进程如下: package edidemon; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Date; im
package edidemon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;
import javax.swing.Timer;
import java.util.Observable;
import java.util.Observer;
/**
*
* @author Bottago SA
*/
public class EDIDemon extends Observable {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
EDIDemon edid = new EDIDemon();
edid.addObserver(new Observer() {
@Override
public void update(Observable o, Object arg) {
//se invoca por medio de cmd al php lector EDI
try {
String cmd = "invoker.bat";
Runtime.getRuntime().exec(cmd);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
});
try {
Thread.sleep(Long.MAX_VALUE);
} catch (Exception e) {
}
}
public EDIDemon() {
Timer timer;
timer = new Timer(12000, new ActionListener()//6000 es un segundo
{
@Override
public void actionPerformed(ActionEvent e) {
setChanged();
notifyObservers(new Date());
}
});
timer.start();
}
}
读取并移动文件的php代码的一部分
if ($handle = scandir('C:/xampp/htdocs/EDI/Prepared')){
foreach($handle as $entry){
if (in_array($entry, array(".",".."))) continue;
if(isset($entry)){
echo "<table><tr><td><strong>File: ".$entry."</strong></td></tr></table><br>";
//---Mover archivos de un directorio a otro almacenados una vez leidos
$subir = 'C:/xampp/htdocs/EDI/Prepared/';
$path = $subir.$entry;
$Uploaded = 'C:/xampp/htdocs/EDI/Uploaded/';
$Failed = 'C:/xampp/htdocs/EDI/Failed/';
$newName = file($path);
$ponteiro = fopen ($path,"r");
$arquivo = '';
while (!feof ($ponteiro)) {
$arquivo = $arquivo.fgets($ponteiro);
}
fclose ($ponteiro);
$padrao = fnc_resgata_padrao($arquivo);
$segmento = fnc_obter_linha_segmento ($arquivo, "UNB");
$sender = fnc_edi_recupera_compnte($segmento,2,0);
$sendername = substr($sender, 0, 3);
if ($padrao == "COARRI" && $sendername !== "TPG"){
$a = fnc_processa_coarri(trim($arquivo));
prc_mostra_coarri($a, $entry, $arquivo);
copy($path, $Uploaded.$entry);
unlink($path);
}
elseif ($padrao == "COARRI" && $sendername == "TPG"){
$a = fnc_processa_coarri_header_tpg(trim($arquivo));
$a = fnc_processa_coarri_tpg(trim($arquivo)) +$a;
prc_mostra_coarri($a, $entry, $arquivo);
copy($path, $Uploaded.$entry);
unlink($path);
}
elseif ($padrao == "CODECO") {
$a = fnc_processa_codeco(trim($arquivo));
prc_mostra_codeco($a, $entry, $arquivo);
copy($path, $Uploaded.$entry);
unlink($path);
}
elseif ($padrao == "BAPLIE") {
$a = fnc_processa_baplie(trim($arquivo));
prc_mostra_baplie($a);
}
elseif ($padrao == "WESTIM"){
$a = fnc_processa_westim(trim($arquivo));
prc_mostra_westim($a, $entry, $arquivo);
}
else {
copy($path, $Failed.$entry);
unlink($path);
echo "<table><tr><td><strong>Archivo incorrecto</strong></td></tr></table>";
}
} else {
echo "You need to select a file. Please try again.";
}
}
}
if($handle=scandir('C:/xampp/htdocs/EDI/Prepared')){
foreach($handleas$entry){
如果(在数组中($entry,数组(“.”,“.”))继续;
如果(isset($entry)){
echo“文件:“.$entry.”
”;
//---移动archivos de un directorio a otro almacenados una vez leidos
$subir='C:/xampp/htdocs/EDI/Prepared/';
$path=$subir.$entry;
$upload='C:/xampp/htdocs/EDI/upload/';
$Failed='C:/xampp/htdocs/EDI/Failed/';
$newName=文件($path);
$ponteiro=fopen($path,“r”);
$arquivo='';
而(!feof($ponteiro)){
$arquivo=$arquivo.fgets($ponteiro);
}
fclose($ponteiro);
$padrao=fnc_resgata_padrao($arquivo);
$segmento=fnc_obter_linha_segmento($arquivo,“UNB”);
$sender=fnc\u edi\u Recepera\u compnte($segmento,2,0);
$sendername=substr($sender,0,3);
如果($padrao==“COARRI”&&$sendername!==“TPG”){
$a=fnc_processa_coarri(修剪($arquivo));
prc_mostra_coarri($a,$entry,$arquivo);
复制($path,$Uploaded.$entry);
取消链接($path);
}
elseif($padrao==“COARRI”&&$sendername==“TPG”){
$a=fnc_processa_coarri_header_tpg(修剪($arquivo));
$a=fnc_processa_coarri_tpg(修剪($arquivo))+$a;
prc_mostra_coarri($a,$entry,$arquivo);
复制($path,$Uploaded.$entry);
取消链接($path);
}
elseif($padrao==“编解码器”){
$a=fnc_processa_codec(trim($arquivo));
prc_mostra_codeco($a,$entry,$arquivo);
复制($path,$Uploaded.$entry);
取消链接($path);
}
埃尔塞夫($padrao==“BAPLIE”){
$a=fnc_processa_baplie(trim($arquivo));
中华人民共和国(一美元);
}
elseif($padrao==“威斯汀”){
$a=fnc_processa_westim(trim($arquivo));
prc_mostra_westim($a,$entry,$arquivo);
}
否则{
复制($path,$Failed.$entry);
取消链接($path);
回声“归档不正确”;
}
}否则{
echo“您需要选择一个文件。请重试。”;
}
}
}
问题是,如果我只运行.bat,php应用程序读取的文件会像往常一样移动到另一个目录。但是,如果我运行守护程序(java应用程序),它只读取文件,插入数据库,但不移动到另一个目录
?有人能提供线索吗?嗯,如果php在“运行”时以某种方式失败,您可能应该发布php代码java@RC. 我刚刚添加了php代码。
if ($handle = scandir('C:/xampp/htdocs/EDI/Prepared')){
foreach($handle as $entry){
if (in_array($entry, array(".",".."))) continue;
if(isset($entry)){
echo "<table><tr><td><strong>File: ".$entry."</strong></td></tr></table><br>";
//---Mover archivos de un directorio a otro almacenados una vez leidos
$subir = 'C:/xampp/htdocs/EDI/Prepared/';
$path = $subir.$entry;
$Uploaded = 'C:/xampp/htdocs/EDI/Uploaded/';
$Failed = 'C:/xampp/htdocs/EDI/Failed/';
$newName = file($path);
$ponteiro = fopen ($path,"r");
$arquivo = '';
while (!feof ($ponteiro)) {
$arquivo = $arquivo.fgets($ponteiro);
}
fclose ($ponteiro);
$padrao = fnc_resgata_padrao($arquivo);
$segmento = fnc_obter_linha_segmento ($arquivo, "UNB");
$sender = fnc_edi_recupera_compnte($segmento,2,0);
$sendername = substr($sender, 0, 3);
if ($padrao == "COARRI" && $sendername !== "TPG"){
$a = fnc_processa_coarri(trim($arquivo));
prc_mostra_coarri($a, $entry, $arquivo);
copy($path, $Uploaded.$entry);
unlink($path);
}
elseif ($padrao == "COARRI" && $sendername == "TPG"){
$a = fnc_processa_coarri_header_tpg(trim($arquivo));
$a = fnc_processa_coarri_tpg(trim($arquivo)) +$a;
prc_mostra_coarri($a, $entry, $arquivo);
copy($path, $Uploaded.$entry);
unlink($path);
}
elseif ($padrao == "CODECO") {
$a = fnc_processa_codeco(trim($arquivo));
prc_mostra_codeco($a, $entry, $arquivo);
copy($path, $Uploaded.$entry);
unlink($path);
}
elseif ($padrao == "BAPLIE") {
$a = fnc_processa_baplie(trim($arquivo));
prc_mostra_baplie($a);
}
elseif ($padrao == "WESTIM"){
$a = fnc_processa_westim(trim($arquivo));
prc_mostra_westim($a, $entry, $arquivo);
}
else {
copy($path, $Failed.$entry);
unlink($path);
echo "<table><tr><td><strong>Archivo incorrecto</strong></td></tr></table>";
}
} else {
echo "You need to select a file. Please try again.";
}
}
}