在windows上用bat自动拉取服务器上的文件
记用BAT(批处理脚本)实现文件下载功能
[组图]记用BAT(批处理脚本)实现文件下载功能热荐【字体:小大】闲来无事之--记用BAT(批处理脚本)实现文件下载功能作者:ZV(ZVROP…文章来源: 点击数:4864 更新时间:2004-8-19作者:ZV(ZVROP)邮件:zvrop@主页:(被整顿掉老~~~~~>_<~~~~~~)网站:日期:2004-8-18转载请保全文档完整,谢谢写的仓卒繁多,错漏难免,还请各位给予斧正.有什么问题,可以给我发email.^_^...目录:一.写在前面的话二.故事的起因三.解决-腹稿四.解决-实战五.解决-打造六.包装七.小节八.后记九,参考文献正文开始:一.写在前面的话这篇文档讲述的并不是什么新鲜的技术,我只是起到将他们混和起来实现了自己需要的功能的作用,如果你对批处理和PE格式相当了解,那我的这篇文档就权且当作浏览温习吧...^_^...另外,由于我本人废话比较多,这也是不想给杂志写稿子的主要原因,给我干瘪瘪的3000字能讲出什么来,不如这样没有限制的爽快(当然也没什么报酬...一_一..),所以也为了防止你在看文章的途中睡着,请自备小锥子一把.....最后,这篇文档说是用批处理下载文件,其实它包含了很多方面的知识,如果有时间,不妨一看哈,^_^,开始买瓜了..二.故事的起因最初萌发这个想法的是不久前,在论坛(广告一下:)上的UNIX SHELL板块有个会员发了一篇帖子,内容是用BASH SHELL写的一个成批下载图片的脚本(其实是H图片...一_一..),接下来跟贴那个多啊...,有繁衍出PHP的,VBS的,C的,C#的,JAVA的,甚至交流到多线程,断点续传....引用花大哥的一句话"无语,为了MM照片,大家的动力都很足啊!"...汗~~..在发了一份PHP和C的代码后(感觉我动力特足~大色狼...一_一..),觉得很简单(因为用C 或者PHP等脚本来实现文件的下载本来就是很基础的东西)我就开始想用微软最原始的脚本--Batch(批处理)来尝试实现(本文标题中的"闲来无事"就是纪念此处,一_一.),这似乎有点不可思议,因为批处理几乎没有实现的支持网络的功能(当然,如果你说你能用TELNET下载到文件的我是很佩服的..一_一..),但也不是完全没有办法,毕竟WINDOWS里面能用的东西这么多,没有完不成的事情....在这种挑战的勾引下,我完成了用批处理下载文件的功能....现在让我一步一步回放我的思路,揭开用批处理下载文件的奥秘...三.解决-腹稿如果用批处理来下载文件的话,肯定会马上想到Cscript脚本(或者是JAVA脚本),那是当然,太多的批处理脚本实现一些本身并不可能实现的功能的时候都是采用ECHO出一个其他脚本的方法来解决.可是我们的目的就在于用批处理实现下载的功能,如果要用VBS来帮忙的话不如直接写VBS了.这个想法顺即告吹....再来,记得以前有流行过一阵用RUNDLL32来加载DLL中的API,似乎和我们需要的目的沾边,因为下载文件能用的API太多了,如果RUNDLL能调用,那最好不过了.于是我打开MSDN,找了一个API: URLDownloadToFileURLDownloadToFile函数原型:代码HRESULT URLDownloadToFile(LPUNKNOWN pCaller,LPCTSTR szURL,LPCTSTR szFileName,DWORD dwReserved,LPBINDSTATUSCALLBACK lpfnCB);URLDownloadToFile函数的一些信息:引用Header Urlmon.hImport library Urlmon.libMinimum availability Internet Explorer 3.0Minimum operating systems Windows NT 4.0, Windows 95根据这些,我们可以知道,这个API是在URLMON.DLL文件中的一个导出函数,简单的实现了把一个文件从WEB服务器下载本机的功能,其实用这个函数还不错的,至少它帮我们处理了断点续传,缓存等等的功能,比起直接使用SOCKET函数来实现或者用WININET里的函数来实现简单多得多了.URLDownloadToFile有五个参数:第一个参数是仅当调用者是一个ActiveX对象才使用,一般为NULL.第二个参数就是要下载文件的目标URL,完整路径.第三个是本地保存路径,也是完整路径第四个是保留,必须为0第五个是指向一个IBindStatusCallback接口的指针,这就类似一种回调机制,你可以参考这些来活动当前下载进度,选择是否继续下载等等.这里面我们只关心第二和第三个参数.其他的通通设置成0.(当然你写C的时候最好设置为NULL)嗯,敲了点键盘介绍了这个函数,是因为整篇的文档都和这个函数息息相关,有了这个函数,就可以呼叫RUNDLL32来调用它,但是很可惜,这个美好的计划马上也破裂了...我去微软看了他们的164787号文档(/default.aspx?...kb;en-us;164787),该文档阐述了RUNDLL32的调用方式和能被他调用的函数的格式:它们是这么说的:引用Rundll and Rundll32 programs do not allow you to call any exported function from any DLL. For example, you can not use these utility programs to call the Win32 API (Application Programming Interface) calls exported from the system DLLs. The programs only allow you to call functions from a DLL that are explicitly written to be called by them.这个是规定的格式:代码void CALLBACKEntryPoint(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow);很不幸,我们的URLDownloadToFile小兄弟并没有符合这些条件,被RUNDLL32无情的抛弃了(汗一滴..)...但是我们并没有因此而嫌弃它(汗一滴AGAIN..),毕竟,在后来实现的过程里,它是为我们的工作省下了不少功夫.到此,用RUNDLL32运行计划流产....(寒...)想了一根烟功夫,现在URLDownloadToFile有了,怎么才能调用这个函数呢?总不能模仿汇编PUSH 5个参数进栈,然后CALL吧,那这个函数的地址还要用LoadLibrary()和GetProcAddress()计算得来,那这两个函数的地址.....还是放弃...等等,如果用一个EXE来实现的话就简单很多了(至少EXE是不需要任何解释器的),对,写一个EXE来下载文件.可我们的目的是用BAT来下载呢,BAT文件能包裹EXE的数据吗?答案是肯定的...往下看..记得以前看过一篇文档<<Do All in Cmd Shell>>里面介绍过一种方法.先卖个关子.大家都知道,如果用ECHO加上重定向符来写文件的话,只能写入ASCII的一部分,也就可以显示出来的那些ASCII(也就是ASCII值小于128的那些),对于那些无法显示的字符就没有办法了.但是这让我们想起一个工具,一个微软历史上同样古老的,批处理的兄弟--DEBUG!现在思路清晰了:可以让批处理把ECHO不能显示的字符转化为16进制数据(比如EXE中的那些数据)保存在批处理中,然后用DEBUG写道文件里,最后用BAT调用生成的EXE,下载文件!(想完了这里,我感觉还是太麻烦,不知道哪位牛人对这个实现还有什么更加简单的办法吗??)四.解决-实战倘若就此编写一个可下载文件的EXE,然后直接用BAT包裹,定然会被同行耻笑,不单是因为那几千个字节的数据拖着大大臃肿的BAT文件,更加让为这种简单的想法立刻现形,为了不达到这些负面效果,也为了让这篇文档不至于干瘪瘪的让人感觉没什么看头(事实上是因为早些时候看过watercloud的一篇大作感悟颇深),我决定手工写一串16进制代码来代替机器编译的EXE.既美观了界面,又增强了技术性.....(一_一...简直是在卖作...)现在当务之急是要一个可以下载文件的EXE程序,实现这个目标只要一个URLDownloadToFile 即可,放在最后实现,先来写一个PE框架:大家都知道PE文件的格式吧,不懂的就去看看那个著名的电信黑客罗某某的书.(Who!?...~)先给出我们的PE框架,基于XP的FileAlignment对齐大小最小就支持到0x200(也就是10进制的512字节,以下有在前面加上0x的都表示16进制数值),我们的框架就打出512字节(注意,我下面留有空白表示各个PE部分,结合下面的文档,大家方便理解),这个框架里没有任何的代码或者数据:(ZV友情提示:下面是最枯燥的部分,各位手握锥子,要有一不怕苦,二不怕痛的精神看完它....)(如果定力不高的朋友,或者堆PE文件再熟悉不过的朋友,可以字节转到"JMP S1"处往下看.) (如果只想知道到底怎么回事,或者对这篇作文报浏览态度的朋友,可以直接转到"JMP S2"处继续浏览)(睡着了的继续睡觉....)代码Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F00000000 4D 5A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 MZ.............. 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00 ............@...==============================================================================00000040 50 45 00 00 4C 01 02 00 00 00 00 00 00 00 00 00 PE..L........... 00000050 00 00 00 00 70 00 0F 010B 01 00 00 00 02 00 00 ....p........... 00000060 00 00 00 00 00 00 00 00 79 01 00 00 00 00 00 00 ........y....... 00000070 00 00 00 00 00 00 40 00 00 10 00 00 00 02 00 00 ......@......... 00000080 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 ................ 00000090 00 30 00 00 00 02 00 00 00 00 00 00 02 00 00 00 .0.............. 000000A0 00 01 00 00 00 00 00 00 00 01 00 00 00 10 00 00 ................ 000000B0 00 00 00 00 02 00 00 0000 00 00 00 00 00 00 00 ................ 000000C0 28 11 00 00 28 00 00 00==============================================================================00 00 00 00 00 00 00 00 (...(........... 000000D0 00 02 00 00 00 10 00 00 00 02 00 00 00 01 00 00 ................ 000000E0 00 00 00 00 00 00 00 00 00 00 00 00 60 00 00 60 ............`..` 000000F0 00 00 00 00 00 00 00 00 02 00 00 00 00 20 00 00 ............. .. 00000100 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000110 00 00 00 00 60 00 00 60 00 00 00 00 00 00 00 00 ....`..`........00000120 58 11 00 00 00 00 00 00 50 11 00 00 00 00 00 00 X.......P....... 00000130 00 00 00 00 6E 11 00 00 20 11 00 00 00 00 00 00 ....n... ....... 00000140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000150 58 11 00 00 00 00 00 0000 00 00 00 00 00 00 00 ................ 00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000001B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000001C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................这里简单介绍一下PE文件格式的组成:大致来分呢,PE格式文件可以分为这三个部分(就是上述框架中用"=="分割的三个部分): 引用+++++++++++++++++++++++++DOS信息部分 ++++++++++++++++++++++++++++++++++++++++++++++++++PE信息部分 ++++++++++++++++++++++++++++++++++++++++++++++++++数据部分 +++++++++++++++++++++++++下面来简单介绍每一部分的结构,首先的"DOS信息部分":引用++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++ ++ +[DOS文件头][0x40] + ++ +++++++++++++++++++++++++++++++++++++++ ++ + <==DOS信息部分+ +++++++++++++++++++++++++++++++++++++++ ++ +[DOS块][0x70,可变] + ++ +++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++这部分我觉得是最冗余的地方,首先DOS文件头的结构:代码typedef struct _IMAGE_DOS_HEADER { // DOS .EXE headerWORD e_magic; // Magic numberWORD e_cblp; // Bytes on last page of fileWORD e_cp; // Pages in fileWORD e_crlc; // RelocationsWORD e_cparhdr; // Size of header in paragraphsWORD e_minalloc; // Minimum extra paragraphs neededWORD e_maxalloc; // Maximum extra paragraphs neededWORD e_ss; // Initial (relative) SS valueWORD e_sp; // Initial SP valueWORD e_csum; // ChecksumWORD e_ip; // Initial IP valueWORD e_cs; // Initial (relative) CS valueWORD e_lfarlc; // File address of relocation tableWORD e_ovno; // Overlay numberWORD e_res[4]; // Reserved wordsWORD e_oemid; // OEM identifier (for e_oeminfo)WORD e_oeminfo; // OEM information; e_oemid specificWORD e_res2[10]; // Reserved wordsLONG e_lfanew; // File address of new exe header} IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;其中最重要的就是e_lfanew,它指向了下面的"PE信息部分"的起始地址(也就是俗称的PE头部).其他的是一些DOS下运行这个PE文件必须的结构,比如看注解就明白,什么代码初始化堆栈段,初始化堆栈指针,入口IP,CS等等,都是在WIN32上没有用的东西,我就不翻译拉,这些都是说DOS下的,如果这个PE文件一开始就打定在WINDOWS下运行,这些乱写都无所谓,你甚至可以把你的名字都写进去(.....一_一..).当然,你这么作后这个文件就不能在DOS下运行了..不然当机是几乎可以肯定的....(寒....).需要记的除了e_lfanew是指向PE头的指针外还要记得这个DOS文件头结构长0x40,也就是64个字节.还有第一个参数e_magic,这个地方永远是"0x40 0x5a",也就是字符的"MZ".DOS块部分保存的就是一段DOS下可以执行的代码,比如现在大多编译器就简单的输出一个"This program cannot be run in DOS mode"的字符串,和"DOS信息部分"一样,如果你不打算在DOS执行这个EXE文件,那么这里完全可以删除,为什么?因为WIN32的PE装载器只关心"DOS信息部分"的e_lfanew指向的而已.++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++。
BAT批处理文件教程
BAT批处理文件教程BAT(批处理)文件是Windows操作系统中的一种脚本文件,用于自动化执行一系列命令或任务。
下面是一个关于BAT批处理文件的教程,包含了基本语法、常用命令和一些高级技巧。
一、基本语法2.每个命令或任务在一行上完成,并以换行符或连字符“&&”分隔。
例如:```echo Hello World!pause```上述代码将先输出"Hello World!",然后暂停执行,直到用户按下任意键。
3.注释用REM命令,行开头添加“REM”或“::”。
例如:```REM这是一个注释::这也是一个注释```二、常用命令1. echo:用于输出文本到控制台。
例如:echo Hello World!```2. pause:暂停批处理文件的执行,并提示用户按下任意键继续。
例如:```pause```3. cls:清屏。
例如:```cls```4. cd:改变当前目录。
例如:```cd C:\Program Files```5. dir:显示目录中的文件和子目录。
例如:```dir6. copy:复制文件。
例如:```copy source.txt destination.txt```7. move:移动文件或重命名文件。
例如:```move source.txt destination.txt```8. del:删除文件。
例如:```del file.txt```9. if:条件语句,用于根据一些条件选择执行不同的命令。
例如:```if %ERRORLEVEL%==0echo Successelseecho Failure三、高级技巧1.变量:可以定义和使用变量。
例如:```set var=Helloecho %var%```2. 循环:可以使用for循环来重复执行命令。
例如:```for %%i in (1,2,3) doecho %%i```上述代码将输出数字1、2、33. 函数:可以使用call命令调用子程序。
文件名采集bat
示例输出结果
示例文件名:example.txt
示例路径:C:\Users\Username\Documents
示例结果:成功采集到example.txt文件名,并输出到控制台
示例说明:通过运行文件名采集bat脚本,可以快速获取指定路径下的所有文件名,并 将结果输出到控制台
04
注意事项
确保目标文件夹中没有同名文件
避免文件覆盖:在运行批处理文 件之前,请确保目标文件夹中没 有与将要创建或更新的文件同名 的文件。
谨慎操作:在运行批处理文件之 前,请仔细检查目标文件夹中的 文件列表,确保没有同名文件。
添加标题
添加标题
添加标题
添加标题
备份原文件:如果目标文件夹中 存在同名文件,建议先备份该文 件,以防止意外覆盖。
测试运行:在正式运行批处理文 件之前,可以先进行测试运行, 检查是否有同名文件存在。
注意文件名的编码格式
确保文件名只包含字母、数字和下划线,避免使用特殊字符。 文件名长度应控制在255个字符以内。 避免使用空格或特殊符号作为文件名的一部分。 文件名应具有描述性,方便识别和管理。
定期更新代码以适应操作系统变化
操作系统更新可能导致文件名规则发生变化 定期检查并更新代码以确保兼容性 及时关注操作系统更新通知并采取相应措施 测试更新后的代码以确保无误
解决方案:检查文件路径和文件名是否正确,确 保文件存在且可读
问题:脚本运行速度过慢 解决方案:优化脚本代码,减少 不必要的循环和操作,提高运行效率
解决方案:优化脚本代码,减少不必要的循环和 操作,提高运行效率
YOUR LOGO
THANK YOU
汇报人:XX
问题:运行脚本时出现错误 解决方案:检查脚本代码是否 有语法错误或逻辑错误,确保脚本文件名和路径正确
批处理bat文件实现复制、删除、创建文件夹、执行程序、打开文件
1 建bat文件自动执行复制,删除命令。
例1:以下是复制cd.dll文件至windows\system32的bat文件内容:copy cd.dll %windir%\system32例2:下面一行是卸载windows\system32目录中的cd.dll,即把上面复制的文件删除:del %windir%\system32\cd.dll例3:删除download文件夹中的文件,例子如下:del C:\DOWNLOAD\*.*[注意]:这里的del命令只能删文件,不能删文件夹。
要删除文件夹得用rd命令,如下:rd Filemon这里filemon文件夹和该bat文件在同一目录下,就省去具体路径了。
但rd只能删除空文件夹.要删除文件夹及其里面的所有子目录和文件,用rd命令带/s /q参数,/s参数表示删除该文件夹及其下面的子目录和文件/q参数表示,不需要确认范例如下:rd 123 /s /q2 创建文件夹例:在E:\My documents下面一次创建3个新文件夹:Newfolder1,Newfolder2,Newfolder3@echo offmd "E:\My documents\Newfolder1"md "E:\My documents\Newfolder2"md "E:\My documents\Newfolder3"3 执行程序,打开文件例1:执行C盘下的WinWord.exe程序start C:\WinWord.exe例2:用某个程序打开某个文件,如用TheWorld.exe打开一个htm文件start d:\TheWorld\TheWorld.EXE C:\我有一个恋爱.htm[注意]:不论是程序或文件路径中含有空格,都必须用引号括起来:start d:\TheWorld\TheWorld.EXE "e:\My documents\我有一个恋爱.htm"所有程序中的引号不能是全角的,必须用半角的格式,所以输入引号前最好关闭汉字输入系统XCOPY 还有众多的功能,是加参数来完成的。
WindowsBat命令常用操作
WindowsBat命令常⽤操作1 echo 和 @回显命令@ #关闭单⾏回显echo off #从下⼀⾏开始关闭回显@echo off #从本⾏开始关闭回显。
⼀般批处理第⼀⾏都是这个echo on #从下⼀⾏开始打开回显echo #显⽰当前是 echo off 状态还是 echo on 状态echo. #输出⼀个”回车换⾏”,空⽩⾏#(同echo, echo; echo+ echo[ echo] echo/ echo)2 errorlevelecho %errorlevel%每个命令运⾏结束,可以⽤这个命令⾏格式查看返回码默认值为0,⼀般命令执⾏出错会设 errorlevel 为13 dir显⽰⽂件夹内容dir #显⽰当前⽬录中的⽂件和⼦⽬录dir /a #显⽰当前⽬录中的⽂件和⼦⽬录,包括隐藏⽂件和系统⽂件dir c: /a:d #显⽰ C 盘当前⽬录中的⽬录dir c: /a:-d #显⽰ C 盘根⽬录中的⽂件dir c: /b/p #/b只显⽰⽂件名,/p分页显⽰dir *.exe /s #显⽰当前⽬录和⼦⽬录⾥所有的.exe⽂件4 cd切换⽬录cd #进⼊根⽬录cd #显⽰当前⽬录cd /d d:sdk #可以同时更改盘符和⽬录5 md创建⽬录md d:abc #如果 d:a 不存在,将会⾃动创建中级⽬录#如果命令扩展名被停⽤,则需要键⼊ mkdir abc。
6 rd删除⽬录rd abc #删除当前⽬录⾥的 abc ⼦⽬录,要求为空⽬录rd /s/q d:temp #删除 d:temp ⽂件夹及其⼦⽂件夹和⽂件,/q安静模式7 del删除⽂件del d:test.txt #删除指定⽂件,不能是隐藏、系统、只读⽂件del /q/a/f d:temp*.*删除 d:temp ⽂件夹⾥⾯的所有⽂件,包括隐藏、只读、系统⽂件,不包括⼦⽬录del /q/a/f/s d:temp*.*删除 d:temp 及⼦⽂件夹⾥⾯的所有⽂件,包括隐藏、只读、系统⽂件,不包括⼦⽬录8 ren重命名命令ren d:temp tmp #⽀持对⽂件夹的重命名9 cls清屏10 type显⽰⽂件内容type c:boot.ini #显⽰指定⽂件的内容,程序⽂件⼀般会显⽰乱码type *.txt #显⽰当前⽬录⾥所有.txt⽂件的内容11 copy拷贝⽂件copy c:test.txt d:test.bak复制 c:test.txt ⽂件到 d: ,并重命名为 test.bakcopy con test.txt从屏幕上等待输⼊,按 Ctrl+Z 结束输⼊,输⼊内容存为test.txt⽂件con代表屏幕,prn代表打印机,nul代表空设备copy 1.txt + 2.txt 3.txt合并 1.txt 和 2.txt 的内容,保存为 3.txt ⽂件如果不指定 3.txt ,则保存到 1.txtcopy test.txt +复制⽂件到⾃⼰,实际上是修改了⽂件⽇期12 title设置cmd窗⼝的标题title 新标题 #可以看到cmd窗⼝的标题栏变了13 ver显⽰系统版本14 label 和 vol设置卷标vol #显⽰卷标label #显⽰卷标,同时提⽰输⼊新卷标label c:system #设置C盘的卷标为 system15 pause暂停命令16 rem 和 ::注释命令注释⾏不执⾏操作17 date 和 time⽇期和时间date/t #只显⽰当前⽇期,不提⽰输⼊新⽇期time #显⽰当前时间,并提⽰输⼊新时间,按"回车"略过输⼊time/t #只显⽰当前时间,不提⽰输⼊新时间18 goto 和 :跳转命令:label #⾏⾸为:表⽰该⾏是标签⾏,标签⾏不执⾏操作goto label #跳转到指定的标签那⼀⾏19 find (外部命令)查找命令find "abc" c:test.txt在 c:test.txt ⽂件⾥查找含 abc 字符串的⾏如果找不到,将设 errorlevel 返回码为1find /i “abc” c:test.txt查找含 abc 的⾏,忽略⼤⼩写find /c "abc" c:test.txt显⽰含 abc 的⾏的⾏数20 more (外部命令)逐屏显⽰more c:test.txt #逐屏显⽰ c:test.txt 的⽂件内容21 tree显⽰⽬录结构tree d: #显⽰D盘的⽂件⽬录结构22 &顺序执⾏多条命令,⽽不管命令是否执⾏成功23 &&顺序执⾏多条命令,当碰到执⾏出错的命令后将不执⾏后⾯的命令find "ok" c:test.txt && echo 成功如果找到了"ok"字样,就显⽰"成功",找不到就不显⽰24 ||顺序执⾏多条命令,当碰到执⾏正确的命令后将不执⾏后⾯的命令find "ok" c:test.txt || echo 不成功如果找不到"ok"字样,就显⽰"不成功",找到了就不显⽰25 |管道命令dir *.* /s/a | find /c ".exe"管道命令表⽰先执⾏ dir 命令,对其输出的结果执⾏后⾯的 find 命令该命令⾏结果:输出当前⽂件夹及所有⼦⽂件夹⾥的.exe⽂件的个数type c:test.txt|more这个和 more c:test.txt 的效果是⼀样的26 > 和 >>输出重定向命令> 清除⽂件中原有的内容后再写⼊>> 追加内容到⽂件末尾,⽽不会清除原有的内容主要将本来显⽰在屏幕上的内容输出到指定⽂件中指定⽂件如果不存在,则⾃动⽣成该⽂件type c:test.txt >prn屏幕上不显⽰⽂件内容,转向输出到打印机echo hello world>con在屏幕上显⽰hello world,实际上所有输出都是默认 >con 的copy c:test.txt f: >nul拷贝⽂件,并且不显⽰"⽂件复制成功"的提⽰信息,但如果f盘不存在,还是会显⽰出错信息copy c:test.txt f: >nul 2>nul不显⽰”⽂件复制成功”的提⽰信息,并且f盘不存在的话,也不显⽰错误提⽰信息echo ^^W ^> ^W>c:test.txt⽣成的⽂件内容为 ^W > W^ 和 > 是控制命令,要把它们输出到⽂件,必须在前⾯加个 ^ 符号27 <从⽂件中获得输⼊信息,⽽不是从屏幕上⼀般⽤于 date time label 等需要等待输⼊的命令@echo offecho 2005-05-01>temp.txtdate <temp.txtdel temp.txt这样就可以不等待输⼊直接修改当前⽇期28 %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %*命令⾏传递给批处理的参数%0 批处理⽂件本⾝%1 第⼀个参数%9 第九个参数%* 从第⼀个参数开始的所有参数批参数(%n)的替代已被增强。
bat文件命令大全
bat文件命令大全在计算机操作系统中,bat文件是一种批处理文件,它包含了一系列的命令,可以被操作系统执行。
在Windows操作系统中,bat文件是一种常见的批处理文件格式,通过编写一系列的命令,可以实现自动化的任务执行。
本文将为大家介绍bat文件中常用的命令,帮助大家更好地理解和使用bat文件。
1. echo命令。
echo命令用于在屏幕上显示文本或者将文本输出到文件中。
在bat文件中,可以使用echo命令输出一些提示信息,或者将一些结果输出到日志文件中。
例如:echo "Hello, World!" 将在屏幕上显示Hello, World!echo "Hello, World!" > output.txt 将Hello, World!输出到output.txt文件中。
2. cd命令。
cd命令用于改变当前目录。
在bat文件中,可以使用cd命令切换到指定的目录,以便后续的命令可以在指定的目录下执行。
例如:cd /d D:\test 切换到D盘下的test目录。
3. dir命令。
dir命令用于列出指定目录中的文件和子目录。
在bat文件中,可以使用dir命令查看指定目录中的文件列表。
例如:dir /s 列出当前目录及其子目录中的所有文件和子目录。
4. copy命令。
copy命令用于复制文件。
在bat文件中,可以使用copy命令将文件从一个位置复制到另一个位置。
例如:copy file1.txt D:\backup 将file1.txt文件复制到D盘下的backup目录中。
5. del命令。
del命令用于删除文件。
在bat文件中,可以使用del命令删除指定的文件。
例如:del file1.txt 删除file1.txt文件。
6. move命令。
move命令用于移动文件。
在bat文件中,可以使用move命令将文件从一个位置移动到另一个位置。
例如:move file1.txt D:\backup 将file1.txt文件移动到D盘下的backup目录中。
批量拷贝Windows文件脚本
批量拷贝Windows文件脚本使用Windows操作系统时,有时我们需要将大量的文件从一个位置复制到另一个位置。
手动一个个复制文件耗时且繁琐,这时我们可以使用脚本来批量拷贝文件,提高工作效率。
下面是一个简单的批量拷贝Windows文件的脚本示例:```bat@echo offset source_folder=C:\sourceset destination_folder=C:\destinationxcopy /s /i /q /y "%source_folder%\*" "%destination_folder%\"```以上脚本会将源文件夹中的所有文件(包括子文件夹)复制到目标文件夹中。
下面是对脚本的详细解释:1. `@echo off`:这行代码设置脚本在执行时不在命令行窗口显示具体执行的命令,以保持界面整洁。
2. `set source_folder=C:\source`:这行代码设置源文件夹的路径。
请根据实际情况修改 `C:\source` 为你所需的文件夹路径。
3. `set destination_folder=C:\destination`:这行代码设置目标文件夹的路径。
请根据实际情况修改 `C:\destination` 为你想要将文件复制到的目标文件夹路径。
4. `xcopy /s /i /q /y "%source_folder%\*" "%destination_folder%\"`:这行代码使用xcopy命令进行文件复制。
具体解释如下:- `/s`:复制包括子目录中的文件。
- `/i`:如果目标路径包含不存在的目录或者文件,xcopy会自动创建它们。
- `/q`:安静模式,不显示复制过程。
- `/y`:在复制之前不提示是否覆盖已存在的文件。
- `"%source_folder%\*"`:源文件夹路径,加上`\*`表示复制该路径下的所有文件和文件夹。
bat命令大全
bat命令大全BAT命令大全。
BAT命令是Windows操作系统中的批处理命令,可以通过简单的文本文件来批量执行一系列的命令。
在日常工作中,熟练掌握BAT命令可以极大地提高工作效率。
本文将为大家详细介绍BAT命令的使用方法和常见的命令大全。
一、常用的BAT命令。
1. @echo off。
这个命令用于关闭命令行窗口的回显功能,可以在批处理文件的开头使用,以避免在执行命令时显示命令本身。
2. echo。
echo命令用于在命令行窗口中显示文本信息,可以用来输出提示信息或者调试信息。
3. pause。
pause命令用于暂停批处理文件的执行,等待用户按下任意键后继续执行下面的命令。
4. cd。
cd命令用于改变当前目录,可以通过cd命令切换到指定的目录。
5. dir。
dir命令用于显示当前目录中的文件和子目录的列表,可以通过dir命令查看当前目录下的文件和文件夹。
6. copy。
copy命令用于复制文件或者目录,可以通过copy命令将文件从一个目录复制到另一个目录。
7. del。
del命令用于删除文件,可以通过del命令删除指定的文件。
8. move。
move命令用于移动文件或者目录,可以通过move命令将文件从一个目录移动到另一个目录。
9. start。
start命令用于启动一个新的命令行窗口或者程序,可以通过start命令打开指定的程序或者文件。
10. taskkill。
taskkill命令用于结束指定的进程,可以通过taskkill命令关闭指定的程序或者进程。
以上是常用的BAT命令,掌握这些命令可以满足日常工作中的大部分需求。
当然,BAT命令还有很多其他的命令,可以根据具体的需求进行学习和使用。
二、BAT命令的使用方法。
1. 编写BAT文件。
使用BAT命令需要先编写一个BAT文件,可以使用记事本等文本编辑工具来创建BAT文件。
在BAT文件中,可以按照顺序写入需要执行的命令,每个命令占据一行。
2. 运行BAT文件。
bat批处理文件夹内文件名的提取
bat批 处 理 文 件 夹 内 文 件 名 的 提 取
有时候会在做某些东西的时候 我们要提取某个文件夹的所有文件名,一个一个打出来那不是 现实的 所以这个时候就用到了一个比较简便而又快捷的方法 在所在的文件夹内新建一个a.txt
在a.txt编辑DIR *.* /B >list.txt
这个时候将a.txt另外命名为a.bat
点击a.bat 闪过一个命令窗口 这个时候我们会发现多了一个list.txt文件
点开list.txt查看我们会发现当前目录的所以文件名都 记录在这个txt文本里面了 就此结束。
ቤተ መጻሕፍቲ ባይዱ
用批处理命令批量获取指定文件夹内的文件名
用批处理命令批量获取指定文件夹内的文件名在需要提取文件名的文件夹内新建一个文本文件,输入内容:dir /s /w >>catalog.txt保存后将其文件后缀.txt改为.bat,然后运行之,该文件夹下会自动产生一个catalog.txt的文本文件,其中就包含了当前文件夹的所有文件名列表。
这个bat文件可以挪到任何文件夹下进行运行。
参数解读:如果为dir*.doc/s/w>>catalog.txt,表示仅生成后缀为.doc的文件,如果是*.*,那就表明包含所有文件,因此也可以省略不写(如最上面提到的范例)。
/s表示只显示系统文件;/w表示只显示文件名,至于文件大小及建立的日期和时间则都省略;--------------------------------------------------------------------------------更多参考:DIR命令的格式dir [D:][PATH][NAME][[/A][:attrib]][/o:[sorted][/s][/l][/c[h](1)dir /a:attrib缺省包含所有文件(系统文件.隐含文件)attrib[:][h/-h]只显示隐含文件或非隐含文件.[r/-r]只显示只读文件或非只读文件[s/-s]只显示系统文件或非系统文件[a/-a]只显示要归档文件或非归档文件(2)/o[:]sorted:缺省完全按字母顺序,子目录显示在文件之前/o[n/-n]:按字母顺序或按文件名顺序/反向显示[e/-e]:按扩展名字母顺序/反向显示[d/-d]:按时间顺序/反向显示[s/-s]:按大小从大到小或/反向显示[g/-g]:按子目录先于文件或文件先于子目录(3)/s参数:对当前目录及其子目录中所有文件进行列表(4)/B参数:将只显示文件名与扩展名(5)/L参数:将全部用小写字母对文件或子目录进行列表如何快速获取当前目录下的xls文件清单1,新建一txt文件,输入如下代码:For /r %%i in (*.xls) DO @echo %%~fi >>Excel文件名.txt其中粗体部分为执行批处理后新生成的存放xls文件名清单的txt文件2,存盘后更改扩展名txt为bat3,执行bat文件,就生成了txt格式的文件名清单4,附件为可执行bat文件批处理自身%0的总结。
windowsBAT实用操作实例
windowsBAT实⽤操作实例BAT⽂件netstat_tcp_restart.bat(判断TCP连接数情况并执⾏MYSQL、IIS、主机重启,以防⽌攻击。
可利⽤执⾏计划数分钟执⾏⼀次检测)@echo offsetlocal enabledelayedexpansionfor /f %%i in ('netstat -an') do (set /a a+=1)rem ======本程序将交由VBS执⾏,执⾏时不会显⽰窗⼝,vbs⽂件如下:=========rem createobject ("wscript.shell").run "netstat_tcp_restart.bat",0:: echo "本脚本⽤于检测TCP数量,防⽌⽹络攻击时IIS假死":: echo "每10min运⾏⼀次,每次执⾏5秒-1分钟左右":: echo "本脚本运⾏完⾃动关闭,请不要⼿动操作! ":: echo %a%if %a% GTR 10000 (rem echo "⽹络异常,tcp使⽤: %a%"if %a% GTR 15000 (if %a% GTR 40000 (rem echo ">40000 connections now restart computer!"shutdown -r -t 0ping 127.0.0.1 -n 60 > nul) else (rem echo "15000<tcp numbers<40000 restart iis"rem "C:\Program Files\osinit\bin\reset-network" 1>nul 2>nulC:\Windows\System32\iisreset.exeping 127.0.0.1 -n 50 > nul)) else (rem echo "10000<tcp numbers<15000 restart mysql"net stop mysql5net start mysql5ping 127.0.0.1 -n 30 > nul)) else (rem echo "⽹络正常,tcp使⽤: %a%"rem ping 127.0.0.1 -n 5 > nul)@echo onexitBAT⽂件database_backup.bat (执⾏MYSQL备份。
batmove用法
batmove用法一、什么是batmove?batmove是一个命令行工具,它可以帮助用户批量移动文件或文件夹。
它以批处理脚本的形式运行,通过一系列命令和参数来实现文件的移动操作。
batmove是Windows系统下的一个实用工具,可以帮助用户快速、方便地完成批量文件移动任务。
二、batmove的基本语法格式batmove的基本语法格式如下:batmove [源路径] [目标路径] [选项]其中,源路径指的是需要移动的文件或文件夹所在的路径,目标路径指的是移动后希望文件或文件夹所在的目标路径。
选项可以根据具体需求选择是否添加。
三、batmove常用参数1. /Y该参数表示在移动文件时,不会出现覆盖确认的提示框,即自动覆盖同名文件。
2. /-Y该参数表示在移动文件时,如果出现同名文件,会出现覆盖确认的提示框,需要用户手动确认。
3. /D该参数表示如果目标路径不存在,则会创建该路径。
4. /S该参数表示在移动文件时,会连同子文件夹一起移动。
5. /-S该参数表示在移动文件时,只移动源路径下的文件,不包括子文件夹。
6. /A该参数用来设置移动文件的属性,常见的属性包括只读(R)、隐藏(H)、系统文件(S)等。
7. /V该参数表示在移动文件时,会显示详细的移动过程信息,包括文件名、开始时间、结束时间等。
8. /N该参数表示在移动文件时,不执行实际的移动操作,只展示移动的过程信息。
四、batmove的使用示例1. 将文件移动到指定目录batmove C:\source\file.txt D:\target\上述示例将C盘下的source文件夹中的file.txt文件移动到D盘下的target文件夹。
2. 将文件夹及其子文件夹移动到指定目录batmove C:\source\folder D:\target\ /S上述示例将C盘下的source文件夹及其子文件夹移动到D盘下的target文件夹。
3. 移动文件时覆盖同名文件batmove C:\source\file.txt D:\target\ /Y上述示例将C盘下的source文件夹中的file.txt文件移动到D盘下的target文件夹,并自动覆盖同名文件。
bat命令文件操作
bat命令⽂件操作在做空间数据处理(切⽚、栅格、⽮量等)的时候,数据量总是庞⼤的,有时候⼜不想开⼀个专门的程序执⾏⼤量、重复的⽂件操作,windows本⾝⾃带的bat命令是个很好的选择(简单,处理速度快)。
1 dir 该命令可以获取某个⽂件夹下所有的⽂件名及扩展dir #显⽰当前⽬录中的⽂件和⼦⽬录dir /a #显⽰当前⽬录中的⽂件和⼦⽬录,包括隐藏⽂件和系统⽂件dir c: /a:d #显⽰ C 盘当前⽬录中的⽬录dir c: /a:-d #显⽰ C 盘根⽬录中的⽂件dir c: /b/p #/b只显⽰⽂件名,/p分页显⽰dir *.exe /s #显⽰当前⽬录和⼦⽬录⾥所有的.exe⽂件2 cd 该命令⽤于进⼊当前⽂件夹,以便执⾏程序或其他操作cd #进⼊根⽬录cd #显⽰当前⽬录cd /d d:\sdk #可以同时切换盘符和⽬录3 md 该命令⽤于创建⽂件或⽂件夹md d:\a\b\c #如果 d:\a 不存在,将会⾃动创建中级⽬录#如果命令扩展名被停⽤,则需要键⼊ mkdir \a\b\c。
4 rd 该命令⽤于删除⽂件夹相关内容,⽐单⼀的del 删除⽂件操作权限⼤rd abc #删除当前⽬录⾥的 abc ⼦⽬录,要求为空⽬录rd /s/q d:\temp #删除 d:\temp ⽂件夹及其⼦⽂件夹和⽂件,/q安静模式5 del 删除⽂件del d:\test.txt #删除指定⽂件,不能是隐藏、系统、只读⽂件del /q/a/f d:\temp\ *.*删除 d:\temp ⽂件夹⾥⾯的所有⽂件,包括隐藏、只读、系统⽂件,不包括⼦⽬录del /q/a/f/s d:\temp\ *.*删除 d:\temp 及⼦⽂件夹⾥⾯的所有⽂件,包括隐藏、只读、系统⽂件,不包括⼦⽬录1) 删除⼀个⽂件或多个⽂件del /s /q /f d:\test\a.bat将直接删除d:\test\a.bat,没有任务提⽰del temp\* /q /f /s将直接删除本⽬录的 temp ⽬录的所有⽂件,没有任务提⽰删除⽂件的时候可以使⽤“*”作通配符2) 删除⼀个空⽬录rd /q /s d:\test\log将直接删除d:\test\log⽬录,如果log⽬录⾥⾯有⽂件将⽆法删除3) 删除⼀个⾮空⽬录 (必须指定⽬录名称)rmdir /q /s d:\test\logs必须指定⽬录名称,不能使⽤通配符/S 除⽬录本⾝外,还将删除指定⽬录下的所有⼦⽬录/Q 安静模式,带 /S 删除⽬录树时不要求确认⽆论⾥⾯是否有⽂件或⽂件夹将全部直接删除6 copy 拷贝⽂件copy c:\test.txt d:\test.bak7 xcopy 拷贝⽂件,外部命令xcopy d:\mp3 e:\mp3 /s/e/i/y复制 d:\mp3 ⽂件夹、所有⼦⽂件夹和⽂件到 e:\,覆盖已有⽂件加 /i 表⽰如果 e:\ 没有 mp3 ⽂件夹就⾃动新建⼀个,否则会有询问8pause 暂停命令pause 暂停执⾏,按任意键继续。
文件名采集(1).bat
文件名重复问题及解决方案
单击此处添加标题
文件名重复的原因:文件名相同或相似,导致文件无法正常保存或访问
单击此处添加标题
解决方案:使用不同的文件名或文件名前缀,避免文件名重复;使用日期 时间戳作为文件名的一部分,确保文件名的唯一性
单击此处添加标题
注意事项:在修改文件名时,要确保不会破坏文件的完整性或导致其他问 题
示例代码: Python示例代码 展示如何处理文件 名乱码问题
注意事项:避免使 用特殊字符和非标 准编码格式
文件名过长问题及解决方案
文件名过长的原因:文件名中包含过多字符、文件名中包含特殊字符等 文件名过长的解决方案:使用缩写、删除不需要的字符、使用文件名截断工具等 文件名过长的后果:文件名无法完整显示、文件名无法正常打开等 文件名过长的预防措施:合理规划文件名长度、避免使用特殊字符等
Python脚本库
Pandas库:用 于数据清洗和
处理
NumPy库:用 于数值计算
Matplotlib库: 用于数据可视
化
Scikit-learn 库:用于机器 学习算法实现
其他第三方工具推荐
FileBot:一款功能强大的文件名采集工具, 支持多种格式和语言,可快速批量处理文 件名。
BulkRename:一款简单易用的文件名批 量修改工具,支持多种修改方式,可快速 批量修改文件名。
文件备份
文件名采集用于备份目的,确保数据安全 定期备份重要文件,避免数据丢失 备份方式多样化,支持本地备份和云端备份 文件备份可提高工作效率,减少恢复时间
文件迁移
文件名采集在文件迁移中的应用 文件迁移过程中文件名的规范和要求 文件迁移过程中文件名的处理方式和策略 文件迁移过程中文件名采集的注意事项
extract_files.bat.bat
2
批处理脚本
创建一个包含提取文件命令的批处理脚本,可以进行批量自动化的文件提取。
3
集成到其他工具
将 extract_files.bat.bat 集成到其他工具中,例如文件管理软件或定时任务工具,以实现 更高级的文件提取功能。
ex tract_files.b at.b at 在哪些领域有应用?
软件开发
ex tract_files.b at.b at 的作用 是什么?
extract_files.bat.bat 用于批量提取目标文件,可以帮助用户轻松地从复杂的文 件集合中快速定位所需的文件,提高工作效率。
ex tract_files.b at.b at 的使用方法有哪 些?
1
命令行界面
通过在命令提示符下输入正确的命令和参数,可以执行文件提取操作。
extract_files.bat.bat
extract_files.bat.bat 是一个功能强大的文件提取工具,可在各个领域中应用。 本次演示将详细介绍它的作用、使用方法、优缺点以及其在工作中的应用案 例。
什么是 extract_files.bat.bat?
extract_files.bat.bat 是一个命令行脚本,用于从文件集合中提取特定类型的文 件。通过简单的命令,可以快速而准确地提取所需的文件,并将其保存到指 定的目录中。
ex tract_files.b at.b at 的更新 和维护问题
extract_files.bat.bat 由开发团队进行持续更新和维护,以确保其适应新的操作 系统和环境。用户可以通过官方网站或版本控制工具获取最新的版本,并参 与讨论和反馈问题。
windows使用.bat文件批量执行任务
windows使⽤.bat⽂件批量执⾏任务问题在win环境下, 考虑到这样的场景, 需要运⾏许多中间件和⼯具, ⽐如redis、elasticsearch、rabbitMQ等(当然, docker了解⼀下), 这就使得每次开始就要打开控制台分别开启各个服务, ⼗分⿇烦, 我就寻思着是否可以⽤.bat批量⼀次性执⾏所有任务解决创建⽂本⽂档, 把后缀改为.bat⽂件类型贴⼀下我的.bat⽂件@echo off::获取管理员权限%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit::cd到当前批处理⽂件所在⽬录cd /d "%~dp0"echo "启动redis"start wt.exe D:\redis\Redis-x64-3.2.100\redis-server.exe D:\redis\Redis-x64-3.2.100\redis.windows.confecho "启动elasticsearch"start wt.exe D:\elasticsearch\elasticsearch-6.2.2\bin\elasticsearch.batecho "启动kibana"start wt.exe D:\elasticsearch\kibana-6.2.2-windows-x86_64\bin\kibana.batecho "启动MYSQL57服务"start wt.exe net start MYSQL57echo "启动MongoDB服务"start wt.exe net start MongoDBecho "启动rabbitMQ"因为我的mysql服务需要管理员权限, 所以想启动mysql服务就必须获取管理员权限, 当然你也可以设置把mysql和mongoDB服务⼀直开着。
文件名采集
汇报人:
目录
描 述 文 件 名 采 集 .bat的 功 能 和 作 用
功能:批量采集文 件名,包括文件路 径、文件名、文件 大小等信息
作用:方便用户快 速了解文件信息, 提高工作效率
支持的文件类型: txt、doc、xls、 ppt、pdf等常见 文件类型
使用方法:双击运 行bat文件,选择 需要采集的文件夹 ,即可自动生成文 件名列表。
FileGrabber:一款开源的FTP和SFTP客户端,支 持多种协议,如FTP、SFTP、SCP等,功能强大, 适用于Windows和Linux系统。
WinRAR:一款压缩和解压缩工具,支持多种压缩 格式,如RAR、ZIP、7Z等,功能强大,适用于 Windows系统。
比 较 文 件 名 采 集 .bat 与 其 他 类 似 工 具 的 优 劣 和 差 异
根据需求选择合适的文件格式和命名规则
定期备份重要文件,防止数据丢失
使用统一的命名规范,便于管理和查找
针对不同使用场景,选择合适的文件存储 和备份方案
注意文件权限和访问控制,保护数据安全
定期清理不需要的文件,释放存储空间
鼓励用户积极反馈问题和建议,以便不断完善和改进工 具
建议用户遇到问 题时,及时反馈 给开发者
字母等,功能单一,但操作简单。 • 文件名合并工具:适用于各种操作系统,可将多个文件名合并为一个,功能单一,但操作简单。 • 文件名拆分工具:适用于各种操作系统,可将一个文件名拆分为多个,功能单一,但操作简单。 • 文件名加密工具:适用于各种操作系统,可对文件名进行加密,保护文件安全,但操作相对复杂。 • 文件名解密工具:适用于各种操作系统,可对加密的文件名进行解密,恢复文件原名,但操作相
相对复杂。 • 文件名搜索工具:适用于各种操作系统,可快速搜索指定文件名,功能强大,但需要一定的搜索
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如果远程机器开了ftp服务,那么可以在win上用ftp命令拉取。
脚本如下
FTP.bat
:路径写在bat文件中,可以支持中文路径
@echo off
:记载每次执行的年月日到一个日志文件中 可以自行修改
echo %date:~0,10%>>D:\Win7系统文件夹\Desktop\工作\日常检查\日志归档\我用的
FTP\v1.1\ftp.log
:进入D盘 cmd中的固定写法 必须先进入D盘才能进入到D盘下面的目录
D:
:进入到D盘的某个目录 此处将作为ftp获取文件后的默认目录
cd D:\Win7系统文件夹\Desktop\工作\日常检查\日志归档
:ftp命令 参数引用ftp.txt
ftp s:D:\Win7系统文件夹\Desktop\工作\日常检查\日志归档\我用的FTP\v1.1\ftp.txt>>D:\Win7系统文件夹\Desktop\工作\日常检查\日志归档\我用的FTP\v1.1\ftp.log
:退出
exit
ftp.txt的内容如下 红色部分为注释 请删除
prompt off关闭交互模式
open 133.64.94.99连接到哪台机器
oracle用户名
Pdh2_ab密码
cd /home/oracle
mget sun_check_*log*批量获取sun_check_*log*格式的文件 *为通配符
mdelete sun_check_*log*批量删除sun_check_*log*格式的文件 如果只删除一个文件 并知道具体文件名的话 也可以用delete命令 语法相同 但是delete命令只支持一次删一个 且不支持通配符close关闭该连接
bye退出FTP模式
如果有多台机器需要操作 则在txt文件中重复open到close的内容
有些远程机器仅打开了sftp服务 win上并不支持该命令 此时想要达到童谣的目的,则需要安装winscp
官档为https:///eng/docs/lang:chs 此软件免费 直接下载安装即可 中途一直下一步 和安装一个QQ一样简单 我安装的路径在 d:\Program Files\WinSCP
新建一个sftp.bat文件 内容如下
D:
cd d:\Program Files\WinSCP
winscp.exe /console /command "option batch continue" "option confirm off" "option transfer binary" /script=D:\Win7系统文件夹\Desktop\工作\日常检查\日志归档\winscp\sftp.txt /log=D:\Win7系统文
件夹\Desktop\工作\日常检查\日志归档\sftp.log
:command后面跟的是所有使用到的命令参数每个参数用双引号引起来 以空格隔开 option batch continue默认批处理 option confirm off 关闭提示信息 option transfer binary使用二进制格式传送
:script=后面跟的是txt文件位置 此参数可省略 把相关参数以命令的形式全部写在bat里 但是这样的话就必须全部写在一行里 看起来比较长 也比较费事 格式如winscp.exe /console /command "option batch continue" "option confirm off" "open sftp://user:pwd@ip:port" "option transfer binary" "put D:\需要上传的文件路径 /服务器文件存放目录" "exit" /log=
:/log=输出log所在的位置
:如果上面用到了txt配置参数 如我这里 则新建sftp.txt 内容如下
open sftp://oracle:Pdh2_ab@133.64.94.99 hostkey=*
get /home/oracle/sun_check_*log* D:\Win7系统文件夹\Desktop\工作\日常检查\日志归档\
rm /home/oracle/sun_check_*log*
参照FTP的txt相信能看懂 如果有多台机器 重复你需要的内容即可
sftp第一次连接服务器的时候会提示你输入y确认key信息,否则连接失败。
脚本是为了自动化服务,没时间输入y,所以加上 hostkey=*参数。