Linux通过Smb与Windows共享目录

技术文章admin 发表了文章 • 0 个评论 • 21 次浏览 • 2019-02-20 14:10 • 来自相关话题

一、使用Samba   从Linux上访问Windows共享出来的目录:

要想从Linux访问Windows上的共享目录,需要安装smbclient工具。在Debian或Ubuntu上可以使用下面的命令安装:

aptitude install smbclient smbfs
在CentOS上则使用yum命令安装:

yum install samba-client.i386 
安装好smbclient工具,就可以使用mount命令来挂载Windows上的共享目录了:

mount -t cifs -o username=easwy,passwd='pwd' //windows-server/share /mnt/winshare
在这里我们使用的文件系统类型是cifs(Common Internet File System)而不是smbfs,因为Linux Kernel将不再支持smbfs。smbfs的性能也远不如cifs。 注:密码要加上' ' , /mnt/winshare 为linux上要挂载的地方,如果没有可以自己新建一个目录,share为windows下的共享目录。

我们所用的mount -t cifs命令其实会调用mount.cifs,如果你在mount时失败,先检查一下你的mount.cifs命令是否存在。

如果windows计算机处于域中,那么在username一项输入你的域用户名domain/username就可以了。windows-server可以是一台计算机的名称,也可以是一个IP地址。

例:[root@localhost /]# mount -t cifs -o name=admin,passwd='dell' //192.168.1.8/linuxsoft /mnt/samba
如果想列出Windows上的所有共享资源,可以使用命令:
smbclient -L //windows-server -U easwy 
这条命令会列出windows服务器上所有的共享目录和文件。若是share共享则不需要输入密码,直接敲回车即可;相反则必须输入。

例:

[root@localhost root]# smbclient -L //192.168.1.8 -U  langston
added interface ip=192.168.1.85 bcast=192.168.1.255 nmask=255.255.255.0
session request to 192.168.1.8 failed (Called name not present)
session request to 192 failed (Called name not present)
Password: 
Domain=[WORKGROUP] OS=[Windows Server 2003 3790 Service Pack 1] Server=[Windows Server 2003 5.2]
        Sharename      Type      Comment
        ---------      ----      -------
        C$             Disk      默认共享
        su              Disk      
        s2003        Disk      
        IPC$          IPC       远程 IPC
        收藏夹       Disk      
        tools          Disk      
        ADMIN$     Disk      远程管理
        linuxsoft     Disk      
        D$             Disk      默认共享
        E$             Disk      默认共享
    查看全部
一、使用Samba   从Linux上访问Windows共享出来的目录:

要想从Linux访问Windows上的共享目录,需要安装smbclient工具。在Debian或Ubuntu上可以使用下面的命令安装:

aptitude install smbclient smbfs
在CentOS上则使用yum命令安装:

yum install samba-client.i386 
安装好smbclient工具,就可以使用mount命令来挂载Windows上的共享目录了:

mount -t cifs -o username=easwy,passwd='pwd' //windows-server/share /mnt/winshare
在这里我们使用的文件系统类型是cifs(Common Internet File System)而不是smbfs,因为Linux Kernel将不再支持smbfs。smbfs的性能也远不如cifs。 注:密码要加上' ' , /mnt/winshare 为linux上要挂载的地方,如果没有可以自己新建一个目录,share为windows下的共享目录。

我们所用的mount -t cifs命令其实会调用mount.cifs,如果你在mount时失败,先检查一下你的mount.cifs命令是否存在。

如果windows计算机处于域中,那么在username一项输入你的域用户名domain/username就可以了。windows-server可以是一台计算机的名称,也可以是一个IP地址。

例:[root@localhost /]# mount -t cifs -o name=admin,passwd='dell' //192.168.1.8/linuxsoft /mnt/samba
如果想列出Windows上的所有共享资源,可以使用命令:
smbclient -L //windows-server -U easwy 
这条命令会列出windows服务器上所有的共享目录和文件。若是share共享则不需要输入密码,直接敲回车即可;相反则必须输入。

例:

[root@localhost root]# smbclient -L //192.168.1.8 -U  langston
added interface ip=192.168.1.85 bcast=192.168.1.255 nmask=255.255.255.0
session request to 192.168.1.8 failed (Called name not present)
session request to 192 failed (Called name not present)
Password: 
Domain=[WORKGROUP] OS=[Windows Server 2003 3790 Service Pack 1] Server=[Windows Server 2003 5.2]
        Sharename      Type      Comment
        ---------      ----      -------
        C$             Disk      默认共享
        su              Disk      
        s2003        Disk      
        IPC$          IPC       远程 IPC
        收藏夹       Disk      
        tools          Disk      
        ADMIN$     Disk      远程管理
        linuxsoft     Disk      
        D$             Disk      默认共享
        E$             Disk      默认共享
   

SQL Server 数据库自增ID重置

书籍资料admin 发表了文章 • 0 个评论 • 25 次浏览 • 2019-02-20 11:24 • 来自相关话题

SQL Server 数据库原有ID字段,是自增列的,后来把数据全删除后,ID是接着以前的继续增长的,想让ID自增列重新从1开始dbcc checkident('tablename',reseed,0)
 
SQL Server 数据库原有ID字段,是自增列的,后来把数据全删除后,ID是接着以前的继续增长的,想让ID自增列重新从1开始dbcc checkident('tablename',reseed,0)
 

Linux修改网卡ens33为eth0以及centos7下修改动态IP为静态IP地址

技术文章admin 发表了文章 • 0 个评论 • 34 次浏览 • 2019-02-20 10:33 • 来自相关话题

Linux修改网卡ens33为eth0以及centos7下修改动态IP为静态IP地址
上古杰作关注0人评论3639人阅读2018-08-30 17:58:48
修改网卡ens33为eth0
在使用RHEL和Centos7,发现网卡名称变成了EnoX,挺不习惯。现更改回旧名称eth0看着顺眼。

1.备份/etc/sysconfig/grub文件

cp /etc/sysconfig/grub /etc/sysconfig/grub.bak
2.编辑/etc/sysconfig/grub文件

vim /etc/sysconfig/grub
在GRUB_CMDLINE_LINUX后的双引号内添加

net.ifnames=0 biosdevname=0
顺序无所谓,注意各参数间空格。
3.重建GRUB配置文件

grub2-mkconfig -o /boot/grub2/grub.cfg
4.备份网卡配置文件和更改网卡文件为eth0

cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33.bak
mv /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-eth0
ens33可能和各位不一样,具体先ifconfig查看自己的ensx多少。
5.编辑/etc/sysconfig/network-scripts/ifcfg-eth0文件

vim /etc/sysconfig/network-scripts/ifcfg-eth0
把NAME和DEVICE由原来的ens33更改为eth0即可。
6.重启系统即可。

[root@linfan ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:7b:4d:fb brd ff:ff:ff:ff:ff:ff
    inet 192.168.24.148/24 brd 192.168.24.255 scope global dynamic eth0
       valid_lft 1610sec preferred_lft 1610sec
    inet6 fe80::f395:669a:c751:9e90/64 scope link
       valid_lft forever preferred_lft forever
Linux下把动态Ip更改为静态Ip
我需要将ip修改为192.168.24.130

1.查看网关地址,我的是192.168.24.2

[root@linfan ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.24.2    0.0.0.0         UG    100    0        0 eth0
192.168.24.0    0.0.0.0         255.255.255.0   U     100    0        0 eth0
2.查看DNS, 我的是192.168.24.2

[root@linfan ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 192.168.24.2
3.配置网卡信息,我的是 vi /etc/sysconfig/network-scripts/ifcfg-eth0

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="eth0"
UUID="e7b272e4-cf09-46cb-8f85-ab6c9c469979"
DEVICE="eth0"
ONBOOT="yes"
修改后为

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO="static"
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=eth0
DEVICE=eth0
ONBOOT=yes
DNS1=192.168.24.2
IPADDR=192.168.24.130
NETMASK=255.255.255.0
GATEWAY=192.168.24.2
重启网卡

[root@linfan ~]# service network restart
Restarting network (via systemctl):                        [  OK  ]
验证:
ping www.baidu.com

[root@linfan ~]# ping www.baidu.com
PING www.a.shifen.com (119.75.216.20) 56(84) bytes of data.
查看ip


[root@linfan ~]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.24.130  netmask 255.255.255.0  broadcast 192.168.24.255
        inet6 fe80::f395:669a:c751:9e90  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:7b:4d:fb  txqueuelen 1000  (Ethernet)
        RX packets 3607  bytes 327107 (319.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2139  bytes 304955 (297.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0 查看全部
Linux修改网卡ens33为eth0以及centos7下修改动态IP为静态IP地址
上古杰作关注0人评论3639人阅读2018-08-30 17:58:48
修改网卡ens33为eth0
在使用RHEL和Centos7,发现网卡名称变成了EnoX,挺不习惯。现更改回旧名称eth0看着顺眼。

1.备份/etc/sysconfig/grub文件

cp /etc/sysconfig/grub /etc/sysconfig/grub.bak
2.编辑/etc/sysconfig/grub文件

vim /etc/sysconfig/grub
在GRUB_CMDLINE_LINUX后的双引号内添加

net.ifnames=0 biosdevname=0
顺序无所谓,注意各参数间空格。
3.重建GRUB配置文件

grub2-mkconfig -o /boot/grub2/grub.cfg
4.备份网卡配置文件和更改网卡文件为eth0

cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33.bak
mv /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-eth0
ens33可能和各位不一样,具体先ifconfig查看自己的ensx多少。
5.编辑/etc/sysconfig/network-scripts/ifcfg-eth0文件

vim /etc/sysconfig/network-scripts/ifcfg-eth0
把NAME和DEVICE由原来的ens33更改为eth0即可。
6.重启系统即可。

[root@linfan ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:7b:4d:fb brd ff:ff:ff:ff:ff:ff
    inet 192.168.24.148/24 brd 192.168.24.255 scope global dynamic eth0
       valid_lft 1610sec preferred_lft 1610sec
    inet6 fe80::f395:669a:c751:9e90/64 scope link
       valid_lft forever preferred_lft forever
Linux下把动态Ip更改为静态Ip
我需要将ip修改为192.168.24.130

1.查看网关地址,我的是192.168.24.2

[root@linfan ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.24.2    0.0.0.0         UG    100    0        0 eth0
192.168.24.0    0.0.0.0         255.255.255.0   U     100    0        0 eth0
2.查看DNS, 我的是192.168.24.2

[root@linfan ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 192.168.24.2
3.配置网卡信息,我的是 vi /etc/sysconfig/network-scripts/ifcfg-eth0

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="eth0"
UUID="e7b272e4-cf09-46cb-8f85-ab6c9c469979"
DEVICE="eth0"
ONBOOT="yes"
修改后为

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO="static"
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=eth0
DEVICE=eth0
ONBOOT=yes
DNS1=192.168.24.2
IPADDR=192.168.24.130
NETMASK=255.255.255.0
GATEWAY=192.168.24.2
重启网卡

[root@linfan ~]# service network restart
Restarting network (via systemctl):                        [  OK  ]
验证:
ping www.baidu.com

[root@linfan ~]# ping www.baidu.com
PING www.a.shifen.com (119.75.216.20) 56(84) bytes of data.
查看ip


[root@linfan ~]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.24.130  netmask 255.255.255.0  broadcast 192.168.24.255
        inet6 fe80::f395:669a:c751:9e90  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:7b:4d:fb  txqueuelen 1000  (Ethernet)
        RX packets 3607  bytes 327107 (319.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2139  bytes 304955 (297.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

挂起的安装MSSQL

技术文章admin 发表了文章 • 0 个评论 • 143 次浏览 • 2018-10-31 15:17 • 来自相关话题

 今天在服务器上的SQL server挂了之后,重新装了,可老提示什么狗P程序被挂起的信息,最后不得不细找原因,功夫不负有心人,终于找出了病症所在,K,我要早知道这么简单,就再也不装系统了.....汗死,详情如下,做个备份,以便今后再碰到类似问题有地方查!

先运行你的安装程序,当提示挂起时,点击“确定”,切记,不要退出安装程序,用ALT+Tal键切换,点击“开始》运行”,输入“regedit”,打开注册表。
找到目录HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session Manager
删除其中的“PendingFileRenameOperations”(前几天,有好几个朋友找错了此文件,在这里不得不说明一下,PendingFileRenameOperations文件位于Session Manager右侧,即当你点击Session Manager时,在右边就可以看到了)
关闭注册表
重新开始安装SQL Server 2000,一且OK了。简单吧
问题解决了,赶紧谢恩吧,哈哈  查看全部
 今天在服务器上的SQL server挂了之后,重新装了,可老提示什么狗P程序被挂起的信息,最后不得不细找原因,功夫不负有心人,终于找出了病症所在,K,我要早知道这么简单,就再也不装系统了.....汗死,详情如下,做个备份,以便今后再碰到类似问题有地方查!

先运行你的安装程序,当提示挂起时,点击“确定”,切记,不要退出安装程序,用ALT+Tal键切换,点击“开始》运行”,输入“regedit”,打开注册表。
找到目录HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session Manager
删除其中的“PendingFileRenameOperations”(前几天,有好几个朋友找错了此文件,在这里不得不说明一下,PendingFileRenameOperations文件位于Session Manager右侧,即当你点击Session Manager时,在右边就可以看到了)
关闭注册表
重新开始安装SQL Server 2000,一且OK了。简单吧
问题解决了,赶紧谢恩吧,哈哈 

用批处理文件自动备份文件及文件夹,并自动删除n天前的文件

技术文章admin 发表了文章 • 0 个评论 • 119 次浏览 • 2018-09-30 09:16 • 来自相关话题

下是备份的批处理,添加到"计划任务"中,设定时间自动运行 
复制代码代码如下:
@echo off 
rem 格式化日期 
rem date出来的日期是"2006-02-22 星期三",不能直接拿来使用,所以应该先格式化一下 
rem 变成我们想要的。date:~0,4的意思是从0开始截取4个字符 
set d=%date:~0,4%%date:~5,2%%date:~8,2% 
rem 设定压缩程序路径,这里用的是WINRAR的rar.exe进行打包的 
set path=C:\Program Files\WinRAR 
rem 设定要备份的目录 
set srcDir=D:\databasc 
rem 设定备份文件所在目录 
set dstDir=E:\temp\backup 
rem 设定备份文件的前缀,目前为temp,前缀为backup 
set webPrefix= 
rem 如果文件不存在,开始备份 
if not exist %dstDir%%webPrefix%%d%.rar start Rar a -r %dstDir%%webPrefix%%d%.rar %srcDir% 
@echo on 


以下是删除N天前备份文件的批处理,注:在windows2003下,如XP下因为没有forfiles.exe,未测试拷贝2003的文件到XP的system32目录 
删除在C盘backup目录下最后修改日期在10天前的文件 
================================================================================= 
forfiles /p "c:\backup" /d -10 /c "cmd /c echo deleting @file ... && del /f @path" 
================================================================================= 
以下是复制某天前文件到其它位置的批处理 
要把在C盘根目录下最后修改日期大于或等于2007年7月1日的文件复制到D盘根目录下 
================================================================================= 
forfiles /p "c:\" /d "2007-7-1" /c "cmd /c copy @path d:\" 
Windows Server 2003内置的命令行文件,适合于XP以上系统 
示例: 
forfiles /m *.bkf /d -28 /c "cmd /c del @file /f" 
删除当前目录下28天以前的扩展名为bkf文件(以当前系统时间为基准) 
forfiles 自动删除7天前文件 delete 
2008-09-12 15:01 
用forfiles.exe试试。 
forfiles /p "d:\test" /s /m *.* /d -7 /c "cmd /c del @path" 
做成批处理文件,bat文件与forfiles.exe同一目录下,建一个bat文件的快捷方式在启动。 
d:\test换成你要的目录路径。日期是指修改的日期。 
附上forfiles.exe及帮助。 
删除所有的空目录(以删除d:\test目录下为例) 
dir /ad/b/s d:\test\ |sort /r >d:\kill.txt 
For /f "tokens=*" %%i in (d:\kill.txt) DO rd "%%i" 
del d:\kill.txt 
把以下复制到bat文件中。 
@echo off 
forfiles /p "d:\test" /s /m *.* /d -7 /c "cmd /c del @path" 
dir /ad/b/s d:\test\ |sort /r >d:\kill.txt 
For /f "tokens=*" %%i in (d:\kill.txt) DO rd "%%i" 
del d:\kill.txt 
先删过期文件,再删所有的空目录 
如果操作系统是 Windows Server 2003 那就好办了,因为它有一个forfiles命令能够查找满足指定条件的文件,下面是这个命令的用法。 
forfiles /p <目标目录名> /d <天数> /c <执行的命令> 
看看列出的三个参数都有什么用处: 
/p 指定了要在哪个目录里查找文件,默认是当前工作目录。 
/d 指定一个日期或天数,用于比较文件的最后修改日期是否符合条件。 
/c 对每个找到的文件执行的命令。 
例1.要把在C盘根目录下最后修改日期大于或等于2007年7月1日的文件复制到D盘根目录下: 
forfiles /p "c:\" /d "2007-7-1" /c "cmd /c copy @path d:\" 
例2.删除在C盘backup目录下最后修改日期在10天前的文件: 
forfiles /p "c:\backup" /d -10 /c "cmd /c echo deleting @file ... && del /f @path" 
先看删除文件的代码 
forfiles /p 包含要删除文件的完整路径(如:F:\Logfiles) /m *.log -d -7 /c "cmd /c del /f @path" 
解释一下相关参数及命令 
/p <Path> : 指定开始搜索文件的位置,如果不指定则默认为当前目录。 
/m <SearchMask> : 文件查找所使用的通配符如代码中的"*.log"则为所有日志文件,当然也可以指定诸如"manmee_*.log"这样以manmee开头的所有日志文件。如果不指定此参数则默认为"*.*"。 
/d [{+|-}][{<Date>|<Days>}] : 指定想选择文件的最后修改时间,上文中用了 "/d -7" 表示所有以当天为基础,7天以前的文件。当然这里还可以指定具体时间,例如:"/d -08/18/2009"这样所有早于2009年8月18日的文件。注意指定的时间必须是"MM/DD/YYYY"的格式。 
/c 对所有文件以此执行指定的命令,命令体须在双引号(")内,默认是"cmd /c echo @file"。上文中用到的是"cmd /c del /f @path"删除指定文件。(这里的@file 和 @path 为变量,下文中将解释。) 
下面说一下上文中用到的参数: 
@PATH : 表示文件的完整的路径。 
@File : 表示文件名称。 
其他参数的详细介绍点击这里。 
接下来我们看看删除文件夹的操作,如果你看了上面的介绍,相信这命令你一看就能看懂。 
forfiles /p 包含文件夹的路径(如:F:\) /m 文件夹名称(如:LogFiles) -d 0 /c "cmd /c if @ISDIR == true rd /s/q @path" 
注意这里的"包含文件夹的路径"不能包含要删除的文件夹,如以上代码所表示的就是,在F盘中查找名为LogFiles的文件或文件夹(不能指定查找文件夹,不过在删除时我们做了判断)。 
还有就是这里出现了一个新的参数"@ISDIR"他用于判断当前文件类型是否是"文件夹类型",如果是则为true否则为false。 
相信到这大家就明白了,最后再将代码保存为批处理文件,然后加入计划任务定期执行即可。 
看了上面的例子,觉得在 Windows Server 2003 下面要删除老文件很简单吧。 
但如果操作系统是 Windows 2000/XP 就比较麻烦,因为它们没有forfiles命令,只能靠自己写批处理来实现了。 
下面是我写的批处理文件内容: 
复制代码代码如下:
@echo off 
rem ****************************** 
rem * 按时间删除文件目录的批处理 * 
rem ****************************** 
rem 设置临时目录的路径 
set tempDir=%tmp%\remove_%date:~0,10% 
if not exist %tempDir% md %tempDir% 
rem 设置处理日期的脚本文件的路径 
set scriptFile=%tempDir%\get_date.vbs 
rem 获得要保留的天数 
set days=%~1 
if "%days%" == "" goto printUsage 
rem 获得目标目录的路径 
set dirPath=%~2 
if "%dirPath%" == "" set dirPath=. 
rem 获得要操作的文件形式 
set fileSpec=%~3 
if "%fileSpec%" == "" set fileSpec=*.* 
rem 生成计算日期的脚本文件并获得删除的截止日期 
echo d=date()-%1 > %scriptFile% 
echo s=right("0000" ^& year(d),4) ^& "-" ^& right("00" ^& month(d),2) ^& "-" ^& right("00" ^& day(d),2) >> %scriptFile% 
echo wscript.echo s >> %scriptFile% 
for /f %%i in ('cscript /nologo %scriptFile%') do set lastDate=%%i 
rem 处理目标目录里的每个对象 
for /f "tokens=1,2,3* delims=<> " %%i in ('dir "%dirPath%\%fileSpec%" /a /-c /tc') do call :proc "%%i" "%%j" "%%k" "%%l" 
goto :done 
rem 处理目标目录里对象的过程 
:proc 
rem 获得对象的创建日期并判断是否为有效格式 
set fileDate=%~1 
echo %fileDate% | findstr "[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]" > nul 
if errorlevel 1 goto end 
rem 获得对象的类型 
set fileType=%~3 
if "%fileType%" == "" goto end 
rem 获得对象的名称 
set fileName=%~4 
if "%fileName%" == "" goto end 
if "%fileName%" == "." goto end 
if "%fileName%" == ".." goto end 
if "%fileName%" == "字节" goto end 
if "%fileName%" == "可用字节" goto end 
rem 判断对象日期是否小于或等于删除的截止日期 
if "%fileDate:~0,10%" leq "%lastDate%" ( 
echo deleting "%fileName%" ... 
if "%fileType%" == "DIR" ( rd /s /q "%dirPath%\%fileName%" ) else ( del /q /f "%dirPath%\%fileName%" ) 

goto end 
:error 
echo An error occurred during backuping. 
:done 
rd /s /q %tempDir% 
goto end 
:printUsage 
echo Usage: %0 ^<Days^> [Work directory] [Target file specification (can include wildcards)] 
goto end 
:end 

主要是利用Windows的脚本功能来计算要删除文件的截止日期,然后for加dir命令来提取文件的日期进行判断。 
关于forfiles和for的详细信息,可以在Windows的帮助与支持中找到。  查看全部
下是备份的批处理,添加到"计划任务"中,设定时间自动运行 
复制代码代码如下:
@echo off 
rem 格式化日期 
rem date出来的日期是"2006-02-22 星期三",不能直接拿来使用,所以应该先格式化一下 
rem 变成我们想要的。date:~0,4的意思是从0开始截取4个字符 
set d=%date:~0,4%%date:~5,2%%date:~8,2% 
rem 设定压缩程序路径,这里用的是WINRAR的rar.exe进行打包的 
set path=C:\Program Files\WinRAR 
rem 设定要备份的目录 
set srcDir=D:\databasc 
rem 设定备份文件所在目录 
set dstDir=E:\temp\backup 
rem 设定备份文件的前缀,目前为temp,前缀为backup 
set webPrefix= 
rem 如果文件不存在,开始备份 
if not exist %dstDir%%webPrefix%%d%.rar start Rar a -r %dstDir%%webPrefix%%d%.rar %srcDir% 
@echo on 


以下是删除N天前备份文件的批处理,注:在windows2003下,如XP下因为没有forfiles.exe,未测试拷贝2003的文件到XP的system32目录 
删除在C盘backup目录下最后修改日期在10天前的文件 
================================================================================= 
forfiles /p "c:\backup" /d -10 /c "cmd /c echo deleting @file ... && del /f @path" 
================================================================================= 
以下是复制某天前文件到其它位置的批处理 
要把在C盘根目录下最后修改日期大于或等于2007年7月1日的文件复制到D盘根目录下 
================================================================================= 
forfiles /p "c:\" /d "2007-7-1" /c "cmd /c copy @path d:\" 
Windows Server 2003内置的命令行文件,适合于XP以上系统 
示例: 
forfiles /m *.bkf /d -28 /c "cmd /c del @file /f" 
删除当前目录下28天以前的扩展名为bkf文件(以当前系统时间为基准) 
forfiles 自动删除7天前文件 delete 
2008-09-12 15:01 
用forfiles.exe试试。 
forfiles /p "d:\test" /s /m *.* /d -7 /c "cmd /c del @path" 
做成批处理文件,bat文件与forfiles.exe同一目录下,建一个bat文件的快捷方式在启动。 
d:\test换成你要的目录路径。日期是指修改的日期。 
附上forfiles.exe及帮助。 
删除所有的空目录(以删除d:\test目录下为例) 
dir /ad/b/s d:\test\ |sort /r >d:\kill.txt 
For /f "tokens=*" %%i in (d:\kill.txt) DO rd "%%i" 
del d:\kill.txt 
把以下复制到bat文件中。 
@echo off 
forfiles /p "d:\test" /s /m *.* /d -7 /c "cmd /c del @path" 
dir /ad/b/s d:\test\ |sort /r >d:\kill.txt 
For /f "tokens=*" %%i in (d:\kill.txt) DO rd "%%i" 
del d:\kill.txt 
先删过期文件,再删所有的空目录 
如果操作系统是 Windows Server 2003 那就好办了,因为它有一个forfiles命令能够查找满足指定条件的文件,下面是这个命令的用法。 
forfiles /p <目标目录名> /d <天数> /c <执行的命令> 
看看列出的三个参数都有什么用处: 
/p 指定了要在哪个目录里查找文件,默认是当前工作目录。 
/d 指定一个日期或天数,用于比较文件的最后修改日期是否符合条件。 
/c 对每个找到的文件执行的命令。 
例1.要把在C盘根目录下最后修改日期大于或等于2007年7月1日的文件复制到D盘根目录下: 
forfiles /p "c:\" /d "2007-7-1" /c "cmd /c copy @path d:\" 
例2.删除在C盘backup目录下最后修改日期在10天前的文件: 
forfiles /p "c:\backup" /d -10 /c "cmd /c echo deleting @file ... && del /f @path" 
先看删除文件的代码 
forfiles /p 包含要删除文件的完整路径(如:F:\Logfiles) /m *.log -d -7 /c "cmd /c del /f @path" 
解释一下相关参数及命令 
/p <Path> : 指定开始搜索文件的位置,如果不指定则默认为当前目录。 
/m <SearchMask> : 文件查找所使用的通配符如代码中的"*.log"则为所有日志文件,当然也可以指定诸如"manmee_*.log"这样以manmee开头的所有日志文件。如果不指定此参数则默认为"*.*"。 
/d [{+|-}][{<Date>|<Days>}] : 指定想选择文件的最后修改时间,上文中用了 "/d -7" 表示所有以当天为基础,7天以前的文件。当然这里还可以指定具体时间,例如:"/d -08/18/2009"这样所有早于2009年8月18日的文件。注意指定的时间必须是"MM/DD/YYYY"的格式。 
/c 对所有文件以此执行指定的命令,命令体须在双引号(")内,默认是"cmd /c echo @file"。上文中用到的是"cmd /c del /f @path"删除指定文件。(这里的@file 和 @path 为变量,下文中将解释。) 
下面说一下上文中用到的参数: 
@PATH : 表示文件的完整的路径。 
@File : 表示文件名称。 
其他参数的详细介绍点击这里。 
接下来我们看看删除文件夹的操作,如果你看了上面的介绍,相信这命令你一看就能看懂。 
forfiles /p 包含文件夹的路径(如:F:\) /m 文件夹名称(如:LogFiles) -d 0 /c "cmd /c if @ISDIR == true rd /s/q @path" 
注意这里的"包含文件夹的路径"不能包含要删除的文件夹,如以上代码所表示的就是,在F盘中查找名为LogFiles的文件或文件夹(不能指定查找文件夹,不过在删除时我们做了判断)。 
还有就是这里出现了一个新的参数"@ISDIR"他用于判断当前文件类型是否是"文件夹类型",如果是则为true否则为false。 
相信到这大家就明白了,最后再将代码保存为批处理文件,然后加入计划任务定期执行即可。 
看了上面的例子,觉得在 Windows Server 2003 下面要删除老文件很简单吧。 
但如果操作系统是 Windows 2000/XP 就比较麻烦,因为它们没有forfiles命令,只能靠自己写批处理来实现了。 
下面是我写的批处理文件内容: 
复制代码代码如下:
@echo off 
rem ****************************** 
rem * 按时间删除文件目录的批处理 * 
rem ****************************** 
rem 设置临时目录的路径 
set tempDir=%tmp%\remove_%date:~0,10% 
if not exist %tempDir% md %tempDir% 
rem 设置处理日期的脚本文件的路径 
set scriptFile=%tempDir%\get_date.vbs 
rem 获得要保留的天数 
set days=%~1 
if "%days%" == "" goto printUsage 
rem 获得目标目录的路径 
set dirPath=%~2 
if "%dirPath%" == "" set dirPath=. 
rem 获得要操作的文件形式 
set fileSpec=%~3 
if "%fileSpec%" == "" set fileSpec=*.* 
rem 生成计算日期的脚本文件并获得删除的截止日期 
echo d=date()-%1 > %scriptFile% 
echo s=right("0000" ^& year(d),4) ^& "-" ^& right("00" ^& month(d),2) ^& "-" ^& right("00" ^& day(d),2) >> %scriptFile% 
echo wscript.echo s >> %scriptFile% 
for /f %%i in ('cscript /nologo %scriptFile%') do set lastDate=%%i 
rem 处理目标目录里的每个对象 
for /f "tokens=1,2,3* delims=<> " %%i in ('dir "%dirPath%\%fileSpec%" /a /-c /tc') do call :proc "%%i" "%%j" "%%k" "%%l" 
goto :done 
rem 处理目标目录里对象的过程 
:proc 
rem 获得对象的创建日期并判断是否为有效格式 
set fileDate=%~1 
echo %fileDate% | findstr "[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]" > nul 
if errorlevel 1 goto end 
rem 获得对象的类型 
set fileType=%~3 
if "%fileType%" == "" goto end 
rem 获得对象的名称 
set fileName=%~4 
if "%fileName%" == "" goto end 
if "%fileName%" == "." goto end 
if "%fileName%" == ".." goto end 
if "%fileName%" == "字节" goto end 
if "%fileName%" == "可用字节" goto end 
rem 判断对象日期是否小于或等于删除的截止日期 
if "%fileDate:~0,10%" leq "%lastDate%" ( 
echo deleting "%fileName%" ... 
if "%fileType%" == "DIR" ( rd /s /q "%dirPath%\%fileName%" ) else ( del /q /f "%dirPath%\%fileName%" ) 

goto end 
:error 
echo An error occurred during backuping. 
:done 
rd /s /q %tempDir% 
goto end 
:printUsage 
echo Usage: %0 ^<Days^> [Work directory] [Target file specification (can include wildcards)] 
goto end 
:end 

主要是利用Windows的脚本功能来计算要删除文件的截止日期,然后for加dir命令来提取文件的日期进行判断。 
关于forfiles和for的详细信息,可以在Windows的帮助与支持中找到。 

Bug: runOnUiThread

技术文章admin 发表了文章 • 0 个评论 • 126 次浏览 • 2018-09-23 22:24 • 来自相关话题

// (Calendar) Date function - Displays dateview on Card final boolean keepRunning1 = true; Thread thread_two = new Thread(){ @Override public void run(){ while(keepRunning1){ // Make the thread wait half a second. If you want... try { Thread.sleep(500); } catch (InterruptedException e) { Toast.makeText(getActivity().getApplicationContext(), "Default Signature Fail", Toast.LENGTH_LONG).show(); e.printStackTrace(); } // here you check the value of getActivity() and break up if needed if(getActivity() == null) return; getActivity().runOnUiThread(new Runnable(){ @Override public void run(){ TextView date = (TextView) getView().findViewById(R.id.date); date.setText(DateUtils.formatDateTime(getActivity().getBaseContext(), System.currentTimeMillis(),DateUtils.FORMAT_SHOW_WEEKDAY | DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_YEAR)); } }); } } };thread_two.start();
  查看全部

// (Calendar) Date function - Displays dateview on Card final boolean keepRunning1 = true; Thread thread_two = new Thread(){ @Override public void run(){ while(keepRunning1){ // Make the thread wait half a second. If you want... try { Thread.sleep(500); } catch (InterruptedException e) { Toast.makeText(getActivity().getApplicationContext(), "Default Signature Fail", Toast.LENGTH_LONG).show(); e.printStackTrace(); } // here you check the value of getActivity() and break up if needed if(getActivity() == null) return; getActivity().runOnUiThread(new Runnable(){ @Override public void run(){ TextView date = (TextView) getView().findViewById(R.id.date); date.setText(DateUtils.formatDateTime(getActivity().getBaseContext(), System.currentTimeMillis(),DateUtils.FORMAT_SHOW_WEEKDAY | DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_YEAR)); } }); } } };thread_two.start();
 

git 删除未跟踪文件

技术文章admin 发表了文章 • 0 个评论 • 137 次浏览 • 2018-09-17 18:59 • 来自相关话题

# 删除 untracked files
git clean -f
 
# 连 untracked 的目录也一起删掉
git clean -fd
 
# 连 gitignore 的untrack 文件/目录也一起删掉 (慎用,一般这个是用来删掉编译出来的 .o之类的文件用的)
git clean -xfd
 
# 在用上述 git clean 前,墙裂建议加上 -n 参数来先看看会删掉哪些文件,防止重要文件被误删
git clean -nxfd
git clean -nfgit clean -nfd




#恢复某个已修改的文件(撤销未提交的修改):
git checkout file-name

例如:git checkout src/com/android/.../xxx.java

比如修改的都是java文件,不必一个个撤销,可以使用

$ git checkout *.java

撤销所有修改


$ git checkout  查看全部

# 删除 untracked files
git clean -f
 
# 连 untracked 的目录也一起删掉
git clean -fd
 
# 连 gitignore 的untrack 文件/目录也一起删掉 (慎用,一般这个是用来删掉编译出来的 .o之类的文件用的)
git clean -xfd
 
# 在用上述 git clean 前,墙裂建议加上 -n 参数来先看看会删掉哪些文件,防止重要文件被误删
git clean -nxfd
git clean -nfgit clean -nfd




#恢复某个已修改的文件(撤销未提交的修改):
git checkout file-name

例如:git checkout src/com/android/.../xxx.java

比如修改的都是java文件,不必一个个撤销,可以使用

$ git checkout *.java

撤销所有修改


$ git checkout 

启动/关闭oracle服务有三种方式

技术文章admin 发表了文章 • 0 个评论 • 168 次浏览 • 2018-08-16 10:49 • 来自相关话题

启动oracle服务有三种方式: 
1 从控制面板 
2 使用MS-DOS命令 
3 通过Oracle Administration Assistant for WindowsNT

-通过控制面板启动oracle服务 
1)选择开始 > 控制面板 〉管理工具 --〉服务 
2)找到你所要启动的oracle服务,单击启动

-通过MS-DOS命令启动oracle服务 
1)打开DOS窗口 
2)在窗口中输入:NET START OracleServiceName

-通过Oracle Administration Assistant for WindowsNT启动oracle服务

1)选择开始 〉程序 〉Oracle - HOME_NAME > Configuration and Migration 
Tools > Oracle Administration Assistant for Windows NT. 
2)找到并右键单击oracle sid 
3)选择启动

   

关闭oracle服务同样也有三种方式: 
1 从控制面板 
2 使用MS-DOS命令 
3 通过Oracle Administration Assistant for WindowsNT

-通过控制面板关闭oracle服务 
1)选择开始 > 控制面板 〉管理工具 --〉服务 
2)找到你所要启动的oracle服务,单击停止

-通过MS-DOS命令关闭oracle服务 
1)打开DOS窗口 
2)在窗口中输入:NET STOP OracleServiceName

-通过Oracle Administration Assistant for WindowsNT关闭oracle服务

1)选择开始 〉程序 〉Oracle - HOME_NAME > Configuration and Migration 
Tools > Oracle Administration Assistant for Windows NT. 
2)找到并右键单击oracle sid 
3)选择停止

   

快速启动Sqlplus的方式:

在开始菜单下,单击"运行"输入: 
    sqlplusw  /nolog  或者sqlplusw user/password

启动/关闭数据库 :startup/shutdown

启动/关闭侦听器:lsnrctl start /lsnrctl stop

 

批处理 启动和关闭 Oracle 11g 服务

启动和关闭数据库所使用的服务器名称和说明:
服务名称                                                    说明
OracleOracle_homeTNSListener           对应于数据库的监听程序
OracleServiceSID                                       对应于数据库的例程
OracleDBConsoleSID                                 对应于Oracle Enterprise Manager(OEM)

其中,Oracle_home表示Oracle主目录,如Oracle11g_home1;SID表示Oracle系统标识符,如OracleServiceORCL的ORCL。

注意:尽管这3个服务都是可以单独地启动和关闭的,但它们之间不像Oracle 10g 中那样没有依存关系。

比较好的启动顺序是:OracleOracle_homeTNSListener,OracleServiceSID,OracleDBConsoleSID。关闭时次序相反。

下面给出了已经排好顺序的启动和停止服务的两个批处理文件:

Start Oracle 11g Service.bat

@echo off

echo 确定要启动Oracle 11g服务吗?

pause

net start OracleOraDb11g_home1TNSListener

net start OracleServiceORCL

net start OracleDBConsoleorcl

echo 启动Oracle 11g服务完成,请确认有没有错误发生。

Pause

 

Stop Oracle 11g Service.bat

@echo off

echo 确定要停止Oracle 11g服务吗?

pause

net stop OracleDBConsoleorcl

net stop OracleServiceORCL

net stop OracleOraDb11g_home1TNSListener

echo 停止Oracle 11g服务完成,请确认有没有错误发生。

Pause 查看全部

启动oracle服务有三种方式: 
1 从控制面板 
2 使用MS-DOS命令 
3 通过Oracle Administration Assistant for WindowsNT

-通过控制面板启动oracle服务 
1)选择开始 > 控制面板 〉管理工具 --〉服务 
2)找到你所要启动的oracle服务,单击启动

-通过MS-DOS命令启动oracle服务 
1)打开DOS窗口 
2)在窗口中输入:NET START OracleServiceName

-通过Oracle Administration Assistant for WindowsNT启动oracle服务

1)选择开始 〉程序 〉Oracle - HOME_NAME > Configuration and Migration 
Tools > Oracle Administration Assistant for Windows NT. 
2)找到并右键单击oracle sid 
3)选择启动

   

关闭oracle服务同样也有三种方式: 
1 从控制面板 
2 使用MS-DOS命令 
3 通过Oracle Administration Assistant for WindowsNT

-通过控制面板关闭oracle服务 
1)选择开始 > 控制面板 〉管理工具 --〉服务 
2)找到你所要启动的oracle服务,单击停止

-通过MS-DOS命令关闭oracle服务 
1)打开DOS窗口 
2)在窗口中输入:NET STOP OracleServiceName

-通过Oracle Administration Assistant for WindowsNT关闭oracle服务

1)选择开始 〉程序 〉Oracle - HOME_NAME > Configuration and Migration 
Tools > Oracle Administration Assistant for Windows NT. 
2)找到并右键单击oracle sid 
3)选择停止

   

快速启动Sqlplus的方式:

在开始菜单下,单击"运行"输入: 
    sqlplusw  /nolog  或者sqlplusw user/password

启动/关闭数据库 :startup/shutdown

启动/关闭侦听器:lsnrctl start /lsnrctl stop

 

批处理 启动和关闭 Oracle 11g 服务

启动和关闭数据库所使用的服务器名称和说明:
服务名称                                                    说明
OracleOracle_homeTNSListener           对应于数据库的监听程序
OracleServiceSID                                       对应于数据库的例程
OracleDBConsoleSID                                 对应于Oracle Enterprise Manager(OEM)

其中,Oracle_home表示Oracle主目录,如Oracle11g_home1;SID表示Oracle系统标识符,如OracleServiceORCL的ORCL。

注意:尽管这3个服务都是可以单独地启动和关闭的,但它们之间不像Oracle 10g 中那样没有依存关系。

比较好的启动顺序是:OracleOracle_homeTNSListener,OracleServiceSID,OracleDBConsoleSID。关闭时次序相反。

下面给出了已经排好顺序的启动和停止服务的两个批处理文件:

Start Oracle 11g Service.bat

@echo off

echo 确定要启动Oracle 11g服务吗?

pause

net start OracleOraDb11g_home1TNSListener

net start OracleServiceORCL

net start OracleDBConsoleorcl

echo 启动Oracle 11g服务完成,请确认有没有错误发生。

Pause

 

Stop Oracle 11g Service.bat

@echo off

echo 确定要停止Oracle 11g服务吗?

pause

net stop OracleDBConsoleorcl

net stop OracleServiceORCL

net stop OracleOraDb11g_home1TNSListener

echo 停止Oracle 11g服务完成,请确认有没有错误发生。

Pause

DataSupport类被弃用

技术文章admin 发表了文章 • 0 个评论 • 368 次浏览 • 2018-08-12 10:08 • 来自相关话题

LitePal库---DataSupport类被弃用

用LitePalSupport类替换
在使用LitePal库进行CRUD时需要我们的类继承DataSupport类,发现这个类被弃用了,/** * DataSupport is deprecated and will be removed in the future release. * For model inheritance, use {@link LitePalSupport} instead. * For static CRUD op, use {@link LitePal} instead. * * @author Tony Green * @since 1.1 */我们可以使用LitePalSupport类来替代DataSupport类 查看全部
LitePal库---DataSupport类被弃用

用LitePalSupport类替换
在使用LitePal库进行CRUD时需要我们的类继承DataSupport类,发现这个类被弃用了,/** * DataSupport is deprecated and will be removed in the future release. * For model inheritance, use {@link LitePalSupport} instead. * For static CRUD op, use {@link LitePal} instead. * * @author Tony Green * @since 1.1 */我们可以使用LitePalSupport类来替代DataSupport类

Marva Collins' Way 中文

书籍资料admin 发表了文章 • 0 个评论 • 194 次浏览 • 2018-07-07 22:16 • 来自相关话题

Marva Collins' Way  中文
Marva Collins' Way  中文