- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个批处理文件,它将启动一个 .js 文件,该文件通过 WinSCP 检查文件是否存在,如果存在则返回批处理文件。
问题是:它总是返回 not found,我不明白为什么。我不确定在这种情况下如何使用通配符。
批处理文件如下所示:
cscript /nologo file.js
if errorlevel 1 goto notfound
exit
:notfound
(another script to copy a file over)
服务器上一次只能存在一个文件。所以每十分钟,这个批处理文件就会运行,检查是否有文件,如果没有,复制一个过来。
文件.js:
// Configuration
// Remote file search for
var FILEPATH = "../filepath/TSS*";
// Session to connect to
var SESSION = "mysession@someplace.come";
// 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);
}
第 4 行说:
var FILEPATH = "../filepath/TSS*";
我认为那颗星给我带来了问题。我需要寻找一个以 TSS 开头的文件,但最后会有一个时间戳。所以我需要在 TSS 之后使用通配符。
所以我需要帮助的是:如果 TSS* 存在任何文件,则使此过程返回 true
任何帮助将不胜感激。
编辑:
var nodes = doc.selectNodes("//w:file/w:filename[starts-with(@value, 'TSS')]");
这段代码似乎不起作用。如果这段代码有效,它似乎可以解决我所有的问题。
最佳答案
您需要更正 var nodes...
行中的 xpath 表达式。尝试这样的事情:
doc.setProperty("SelectionLanguage", "XPath"); //added in edit
var nodes = doc.selectNodes("//w:file/w:filename[starts-with(@value, '" + filename + "')]");
并从 FILEPATH
中删除星号。
注意:为了使用 XPath
作为查询语言,第一行是必需的,而不是默认的(和旧的)XSLPattern
,它不支持诸如 starts-with
或 contains
。
关于javascript - 批处理文件 > Javascript > WinSCP > 检查文件是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16344531/
我不小心从 WinSCP 的 root 用户那里删除了我服务器上的一些日志文件。在首选项中,有一个复选框选项已选中“将文件移动到回收站”。 我到处都找不到回收站,我真的需要找回日志,是否可以从这个回收
有没有使用 winscp 只加载选定数量的文件..有超过 50000 个文件挂起我的 winscp! 最佳答案 这似乎是一些用户面临的问题,并且似乎没有办法解决它。您可以尝试以下一种或多种方法: 登录
如果我有一个名为“hpc”的 session 并且我运行: winscp hpc 我进入命令行模式。如何运行 GUI 并从命令行 (Windows) 打开 session ? 最佳答案 WinSCP
我无法配置 winscp 以使用 ATOM.IO/ 我试图从 wincsp 设置中添加外部编辑器,但是当我单击文件进行编辑时,命令行正在打开,但没有任何 react 。 外部网址:C:\Users\y
我在我的项目中使用 WinSCPnet.dll 并且要正确运行它需要启动目录中的 WinSCP.exe 例如project_path/obj/Debug。但是如果我想使用我的程序,它需要一直在同一个文
我正在使用名为 WinSCPnet.dll 的库。仅当我将 AssemblyFileVersion 设置为与安装它的 WinSCP.exe 相同的版本时,该代码才有效。 我遇到了这个异常: The v
我需要通过 WinSCP .NET 程序集从 FTP 下载文件。我目前有此代码,但错误提示身份验证失败。 try { SessionOptions sessionOptions = new S
我在使用 WinSCP 时遇到了一个奇怪的问题:它运行良好并且我能够连接到远程主机。但是,当我尝试使用 “在 PuTTY 中打开 session ” 时,PuTTY 没有直接使用相同的凭据登录,而是“
C#/Visual Studio: WinSCP NuGet 包的部分安装包括将 WinSCP.exe 添加到我的项目根目录。 (虽然我对项目中的那个位置并不完全满意,但这不是我的问题)。如果我不需要
我有一个使用 WinSCP 从 FTP 下载文件的包,当我在本地执行它时,它运行得很好。但是,当我们从 SSIS DB Catalog 的部署版本运行时,我们遇到了问题。 .dll 文件的 GAC 注
我的应用程序需要使用 SFTP 将文件从某个位置直接复制到 Azure 存储。我们的应用程序使用 C# 和 .NET 4.6,我们的 WinSCP 版本是 5.21.1。 我的旧代码使用 Sessio
我正在使用 WinSCP 来导航我所有的 unix(虚拟)机器。 当我使用“查找”对话框搜索特定文件名并尝试使用简单掩码“status.dat”时。为什么它列出了我的所有目录? 太神奇了... 你有想
我正在用VBA编写winscp脚本来将某些文件从远程同步到本地。我使用的代码是 ""synchronize -filemask=""""*.xlsx"""" local C:\Users\xx\Des
我正在通过命令行调用 WinSCP,但我不知道如何为脚本正确设置被动模式。 现在是脚本: option batch on option confirm off open ftp://user_a
我使用 WinSCP 来访问我们项目的远程文件。如何使用 WinSCP 在所有远程文件/目录中搜索某些文本/单词? 最佳答案 WinSCP 不支持在其主 GUI 中进行文本搜索。 但是有一个内置的 e
我们正在使用 WinSCP 5.1.1。当我们通过 FTP 连接到主机时,WinSCP 错误地显示文件修改时间。它似乎总是 10 小时。因为我们在悉尼,所以我假设我们得到的是 UTC 时间。我怎样才能
我正在尝试使用 WinSCP 连接到我们的 ftp。但是我如何使用 .net 程序集在 PowerShell 中定义端口! 我正在尝试制定一个解决方案,从服务器下载最近的文件,在服务器上将其删除,然后
使用脚本,我尝试扫描目录中的子目录,该子目录每天自动创建,其中包含目录名称中的日期。一旦找到了昨天的日期(因为我需要上传前一天),它将查找另一个子目录,然后查找包含“JONES”的所有文件。找到这些文
我正在使用 WinSCP 通过 SFTP 自动上传文件。我已经开启了level 1 debug log,请问是否可以查看文件是否上传成功?谢谢。 部分日志文件: . 2012-08-30 15:30:
我正在使用 WinSCP for .NET 库。我面临着一些几乎一天以来都无法解决的问题。我想要实现的是获取文件名创建日期。你知道如何实现这一目标吗?我完全是堆栈的。 尝试过这样的操作,但不幸的是源代
我是一名优秀的程序员,十分优秀!