<# :
cls
@echo off
rem 监氏郑谈控新增/改动的指定扩展名丛嫌文件并记录到文件里
mode con lines=3000
set #=Any question&set @=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%@% %z%
cd /d "%~dp0"
powershell -NoProfile -ExecutionPolicy bypass "Invoke-Command -ScriptBlock ([ScriptBlock]::Create([IO.File]::ReadAllText('%~f0',[Text.Encoding]::Default))) -Args '%~f0'"
echo%#% +%$%%$%/%@% %z%
pause
exit
#>
$self=get-item -liter $args[0]
$path=$self.Directory.FullName
$txtfile=".\历史记录.txt"
$ext=@(".jch", ".jc1")
$sleep=2
$txtfile=$txtfile -replace '^\.',$path
$dic=New-Object 'System.Collections.Generic.Dictionary[string,string]'
$enc=[Text.Encoding]::UTF8
if(test-path -liter $txtfile){
$text=[IO.File]::ReadAllLines($txtfile, $enc)
for($i=0$i -lt $text.count$i++){
if(-not $dic.ContainsKey($text[$i])){$dic.add($text[$i],'')}
}
}
while(1){
$files=@(dir -liter $path -recurse|?{($ext -contains $_.Extension) -and ($_ -is [System.IO.FileInfo])})
if($files.length -ge 1){
$fs=New-Object System.IO.FileStream($txtfile, [System.IO.FileMode]::Append)
$sw=New-Object System.IO.StreamWriter($fs, $enc)
for($i=0$i -lt $files.length$i++){
$wt=$files[$i].LastWriteTime.toString('歼碰yyyy-MM-dd HH:mm:ss')
$line=$wt+'|'+$files[$i].FullName.toLower()
if(-not $dic.ContainsKey($line)){
write-host $line$dic.add($line,'')
$sw.WriteLine($line)
$sw.Flush()
}
}
$sw.Close()
$fs.Close()
$sw.Dispose()
$fs.Dispose()
}
start-sleep -seconds $sleep
}
如果JDK是java7,那么可以使用WatchService,这个提供了非常底层的实现。
如果非要自己实现一个.建议使用java.util.Timer 类或者线程,定时执行文件检查任务
下面比较啰嗦和简陋的实现了需求,简单的测试了,但不保证没有bug,仅作参考
import java.io.Fileimport java.io.IOException
import java.util.ArrayList
public class FindNewFile {
public static void main(String[] args) {
while(true){
String path = "c:\\"//路径
File file = new File(path)
File[] 掘碰链判孙files = file.listFiles()
ArrayList<File> list = new ArrayList<File>()//文件对象存到list里
for (int i = 0 i < files.length i++) {
list.add(files[i])
}
try {
Thread.sleep(5000)//暂停5000毫秒
} catch (InterruptedException e) {
e.printStackTrace()
}
File 吵稿file2 = new File(path)
File[] files2 = file2.listFiles()
ArrayList<File> list2 = new ArrayList<File>()
for (int i = 0 i < files2.length i++) {
list2.add(files2[i])
}
if(list2.size()>list.size()){
list2.removeAll(list)//用后来的文件夹对象减去之前的对象,
for (int i = 0 i < list2.size() i++) {
try {
System.out.println(list2.get(i).getCanonicalPath())
} catch (IOException e) {
e.printStackTrace()
}
}
}else{
continue
}
}
}
}
输出
C:\新建公文包C:\新建 Microsoft Publisher 文档.pub
基本实现了对新增文件的输出文件名
@echo off & title 监控文件游明宴夹 By 依梦琴瑶color 0a & mode 35,3
::设置要监控的文件夹
set MtrDir=QWE
::设置要调用�.batèæ¬
set Bat=test.bat
echo æ£å¨åå§æ§ååè®°å½æ件 ...
(for /f "delims=" %%a in ('dir /a-d/s/b "%MtrDir%\*"') do (
echo "%%~a"
))>"%tmp%\oFiles.Lst"
:Loop
set "Change="
cls & echo æ£å¨çæ§æä»¶å¤¹ä¸ ...
for /f "delims=" %%a in ('dir /a-d/s/b "%MtrDir%"') do (
findstr /i "^\"%%~a\"$" "%tmp%\oFiles.Lst" >nul || (
del /f /q "%%~a"
set Change=1
)
)
if defined Change (
echo åç°æ°å¢æ件ï¼å¯å¨å ¶å®èæ¬ãç¥é¶
start "" "%Bat%"
)
goto Loop
èªè¡ä¿®æ¹è¢«çæ§çæ件夹ï¼ä»¥åè°ç¨çbatæ件
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)