我必须进行批处理以自动化业务流程.我必须定期轮询目录以检测新文件并进行处理.在处理旧文件时,可以使用新文件.目前,我使用quartz调度程序和线程同步来确保只有一个线程可以处理文件.
部分代码是:
应用程序的context.xml
<bean id="methodInvokingJob"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"><br/>
<property name="targetObject" ref="documentProcessor" /><br/>
<property name="targetMethod" value="processDocuments" /><br/>
</bean>
Run Code Online (Sandbox Code Playgroud)
DocumentProcessor
.....
public void processDocuments() {
LOG.info(Thread.currentThread().getName() + " attempt to run.");
if (!processing) {
synchronized (this) {
try {
processing = true;
LOG.info(Thread.currentThread().getName() + " is processing");
List<String> xmlDocuments = documentManager.getFileNamesFromFolder(incomingFolderPath);
// loop over the files and processed unlock files.
for (String xmlDocument : xmlDocuments) {
processDocument(xmlDocument);
}
}
finally {
processing = false;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
对于当前代码,我必须阻止其他线程在处理一个线程时处理文件.这是一个好主意吗 ?或者我们支持多线程处理.在这种情况下,我如何知道哪些文件正在处理以及哪些文件刚刚到达?任何想法都非常感激.
是否可以在GAE上设置精确或至少近似的计划任务执行时间,该任务将以指定的速率(5/s,100/h)执行?
我想知道我是否可以使用下面相同的代码并进行一些小的更改来添加我需要的功能.它的写法:
::::Set WshShell = CreateObject("WScript.Shell")
::::WshShell.SendKeys "{capslock}"
Set WshShell = Nothing
findstr "^::::" "%~sf0" > temp.vbs & Cscript //nologo temp.vbs & del temp.vbs
echo Capslock is off
Run Code Online (Sandbox Code Playgroud)
结果:
我想把它改成总是OFF.如何在代码中进行这种轻微修正?
谢谢
我想知道如何监视当前正在运行的批处理作业的状态.我的作业基本上是处理文件夹的一些默认步骤,所以我想逐步向用户显示进度.我正在使用Tasklets和DB Job Repository.解释一些实现这一目标的示例代码将更有帮助.
谢谢.
我在CMD中寻找单个命令,这将允许我重命名文件并将文件从一个目录移动到另一个目录.这是我的任务:使用新扩展名.doc重命名TEST文件夹中的所有.txt文件,然后将它们移动到TEST2文件夹.提前致谢.
我正在编写一个批处理文件,它从一个特定的目录开始 - 比如说C:\FirstFolder\SecondFolder\ThirdFolder\- 并且应该在每个文件夹中执行一个任务,然后上去一个文件夹,直到它到达根目录(C:\).
这里的问题是我们正在处理的驱动器不一定是C:\,它可能是任何驱动器号,所以我不能只检查是否%cd%等于C:\告诉程序停止遍历每个目录.
有人能帮忙吗?
我想创建一个BATCH文件,该文件使用Total Commander 打开一个指定的文件夹。但是有两种可能性:
我有一个代码,该代码使用TotalCommander打开该文件夹,但是它总是启动一个新的TotalCommander,而不使用正在运行的文件夹:
@echo off
SET totalc="C:\totalcmd\TOTALCMD.EXE"
set folder="C:\temp"
ECHO opening %folder% with %totalc%
%totalc% %folder%
ECHO opened
Run Code Online (Sandbox Code Playgroud)
有什么解决方案可以解决吗?
我试图通过使用Cassandra cpp-driver对批处理内的不同表执行3个条件插入:
BEGIN BATCH
insert into table1 values (...) IF NOT EXISTS
insert into table2 values (...) IF NOT EXISTS
insert into table3 values (...) IF NOT EXISTS
APPLY BATCH
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
Batch with conditions cannot span multiple tables
Run Code Online (Sandbox Code Playgroud)
如果在Cassandra中无法实现上述目标,那么将多个条件插入作为事务执行并确保所有成功或全部失败的替代方法是什么?
如何在单个查询中更新DynamoDB中的多个记录?我有一个csv文件作为基于csv文件的输入我必须在DB中更新多个记录(只有一个属性).有没有可用的API?或者这可以使用批处理(Spring-batch)来完成?
这部分工作正常,直到文件名中有一个&符号,在这种情况下它会完全崩溃我的脚本.
echo %filename% | findstr /i /b /c:"%name% (%year%)"
Run Code Online (Sandbox Code Playgroud)
我不能只是将文件名放入引号,因为我需要在开头找到字符串.那我怎么能两个都做?
batch-processing ×10
batch-file ×4
java ×2
cassandra ×1
cmd ×1
command ×1
command-line ×1
datastax ×1
findstr ×1
nosql ×1
python ×1
spring-batch ×1
spring-mvc ×1
task-queue ×1
vbscript ×1