Archivo por lotes> Javascript> WinSCP> Verificar si existe el archivo

Tengo un archivo por lotes que iniciará un archivo .js que, a través de WinSCP, verifica si existe un archivo y regresa al archivo por lotes si lo hace o no.

El problema ES: Siempre devuelve no encontrado, y no puedo entender por qué. No estoy seguro de cómo usar un comodín en este escenario.

El archivo por lotes se ve así:

cscript /nologo file.js
if errorlevel 1 goto notfound
exit
:notfound
(another script to copy a file over)

Solo un archivo puede existir en el servidor a la vez. Así que cada diez minutos, este archivo por lotes se ejecutará, verifique si hay un archivo, si no, copia uno.

El archivo.js:

// Configuration

// Remote file search for
var FILEPATH = "../filepath/TSS*";

// Session to connect to
var SESSION = "[email protected]";

// Path to winscp.com
var WINSCP = "c:\\program files (x86)\\winscp\\winscp.com";

var filesys = WScript.CreateObject("Scripting.FileSystemObject");
var shell = WScript.CreateObject("WScript.Shell");

var logfilepath = filesys.GetSpecialFolder(2) + "\\" + filesys.GetTempName() + ".xml";

var p = FILEPATH.lastIndexOf('/');
var path = FILEPATH.substring(0, p);
var filename = FILEPATH.substring(p + 1);

var exec;

// run winscp to check for file existence
exec = shell.Exec("\"" + WINSCP + "\" /log=\"" + logfilepath + "\"");
exec.StdIn.Write(
"option batch abort\n" +
"open \"" + SESSION + "\"\n" +
"ls \"" + path + "\"\n" +
"exit\n");

// wait until the script finishes
while (exec.Status == 0)
{
WScript.Sleep(100);
WScript.Echo(exec.StdOut.ReadAll());
}

if (exec.ExitCode != 0)
{
WScript.Echo("Error checking for file existence");
WScript.Quit(1);
}

// look for log file
var logfile = filesys.GetFile(logfilepath);

if (logfile == null)
{
WScript.Echo("Cannot find log file");
WScript.Quit(1);
}

// parse XML log file
var doc = new ActiveXObject("MSXML2.DOMDocument");
doc.async = false;
doc.load(logfilepath);

doc.setProperty("SelectionNamespaces", 
"xmlns:w='http://winscp.net/schema/session/1.0'");

var nodes = doc.selectNodes("//w:file/w:filename[@value='" + filename + "']");

if (nodes.length > 0)
{
WScript.Echo("File found");
// signalize file existence to calling process;
// you can also continue with processing (e.g. downloading the file)
// directly from the script here
WScript.Quit(0);
}
else
{
WScript.Echo("File not found");
WScript.Quit(1);
}

En la línea 4 dice:

var FILEPATH = "../filepath/TSS*";

Esa estrella es lo que me está dando problemas, creo. Necesito buscar un archivo que COMIENCE CON TSS, pero tendrá una marca de tiempo pegada al final. Así que necesito simplemente usar un comodín después de TSS.

Entonces, lo que necesito ayuda es: hacer que este proceso se vuelva verdadero si existe algún archivo con TSS *

Cualquier ayuda sería muy apreciada.

EDITAR:

var nodes = doc.selectNodes("//w:file/w:filename[starts-with(@value, 'TSS')]");

Este código parece no funcionar. Si este código funcionara, parece que resolvería todos mis problemas.

Respuestas a la pregunta(2)

Su respuesta a la pregunta