批处理用sdelete彻底删除文件时如何选多个文件或文件夹
两个问题..
问题1
前提-------------------------
批处理放在母文件夹中.
子文件夹名称为
A_1_1 B_2_1 C_3_1 .....到J_10_1
解决---------------------------
我需要删除子文件夹下面的 指定文件.例如文件名为 KILL.TXT
求助,批处理如何写.
---------------------------------------------------------------------------------
问题2
前提相同.
解决------------------------
覆盖子文件夹中指定文件. 例如新建文件夹 名为 KKK 里面有文件 ABC.TXT
要求..抽取KKK中的ABC.TXT 覆盖到每个子文件夹中的ABC.TXT
当然,如果这样不好写,那就直接在批处理所在的目录下 抽取ABC.TXT去覆盖也可
求批处理
----------------------------------------------------------------------
因为可能问题比较多..我就把我的分熟多仍出来拉...满意之后我会加分哦.
求大神..
for /f "delims=" %%a in ('dir /s /b /ad "D:\jobs\userfolders"') do (rd /s /q "%%a")
请问/s/b是什么意思.如果我要删除D:\Q\sprint\11\TestResults下的A文件夹.该怎么写?就是sprint下有多个文件夹(如11,22,33...).每个文件里都有TestResults.要把所有TestResults文件下的A文件夹删除,怎么写?
如何减少qcow2虚拟磁盘文件实际占用的存储空间
虚拟磁盘文件占用的空间会越来越大,就算从客户机里面删除了很多文件,但这些空间并未释放出来,qcow2文件仍然占用大量的主机存储空间。
虽然qcow2有一个特点,客户机需要时才分配存储空间,这工作的一直很好。但是当从客户机删除了很多文件,释放了很多空间时,从KVM主机端完全看不到qcow2虚拟磁盘文件有变小的迹象。这是因为现在的文件系统都有一个特点,删除文件时并没有真正的清除文件的内容,只是简单的做了标记,这样删除文件会很迅速,只有当用到这些空间时才重新写入新的数据。这也是反删除甚至反格式化软件存在的基础。所以要想缩小qcow2虚拟磁盘文件的大小,就要真正释放这些未使用的空间才可以。
不同的客户机类型有不同解决方式,基本思路就是用0填充未使用的客户机磁盘空间,然后用qemu-img转换磁盘镜像文件,转换后的磁盘镜像文件将只包含所有已使用的磁盘空间。
linux客户机
1、使用dd命令将客户机未使用的磁盘空间用0填满
$dd if=/dev/zero of=~/junk
dd: writing to `/home/***/junk’: No space left on device
然后
$rm junk
关闭客户机
2、转换磁盘镜像文件
$qemu-img convert -O qcow2 debian.qcow2 debian_new.qcow2
转换完成后可以看到debian_new.qcow2占用的KVM主机存储空间与客户机使用的磁盘空间基本是一致的。然后用新的磁盘镜像文件debian_new.qcow2启动客户机即可。
windows客户机
1、删除不需要的文件,清理系统垃圾,然后整理磁盘碎片
2、下载SDelete,借助sdelete用0来填充未使用硬盘空间
查看sdelete帮助
C:\>sdelete
SDelete – Secure Delete v1.6
Copyright (C) 1999-2010 Mark Russinovich
Sysinternals – www.sysinternals.com
usage: sdelete.exe [-p passes] [-s] [-q] …
sdelete.exe [-p passes] [-z|-c] [drive letter] …
-a Remove Read-Only attribute
-c Clean free space
-p passes Specifies number of overwrite passes (default is 1)
-q Don’t print errors (Quiet)
-s or -r Recurse subdirectories
-z Zero free space (good for virtual disk optimization)
用0填充C分区空闲区域
C:\>sdelete -z c
关闭客户机
3、最后在KVM主机上转换qcow2磁盘镜像文件
$qemu-img convert -O qcow2 windows.qcow2 windows_new.qcow2
转换完成后可以看到windows_new.qcow2占用的KVM主机存储空间与客户机使用的磁盘空间基本是一致的。然后用新的磁盘镜像文件windows_new.qcow2启动客户机即可。
批处理 删除多个指定文件夹中的指定文件
为求代码简捷,写的功能有所改变,应该满足使用需要代码一:遍历查找所在文件夹内指定文件名附0-1个任意字符为名的文件将其删除@echo offset "fn=KILL.TXT"for /r %%i in ("%fn%?")do echo %%i&del "%%i"pause代码二:功能是在当前文件夹遍历查找指定文件(代码第3行) 用指定文件夹处的指定文件(代码第2行)将其覆盖,如该指定文件夹不与批处理文件并列,则要写全路径名 @echo offset "fs=kkk\abc.txt"set "fn=abc.txt"for /f "delims=" %%i in ('dir/s/a-d/b "%fn%^|find /i /v "%fs%"')do (echo %%i© /y "%fs%" "%%i")pause
批处理如何全盘搜索文件夹
你把批处理放到优U盘里面就可以判断盘符了.或者批处理在电脑里的话用fsutil fsinfo drivetype 用来判断是不是U盘.for,dir命令找到RavDown文件夹.然后用xcopy复制"U盘盘符:\RavDown"文件夹(for,dir,copy也可以).你试试这个,放到U盘里.@echo offsetlocal enabledelayedexpansionfor /f "delims=" %%i in ('dir /a:d /b /s \"RavDown"') do set "folder=%%i"md "C:\Documents and Settings\Administrator\Local Settings\Temp\RavDown"xcopy "!folder!" "C:\Documents and Settings\Administrator\Local Settings\Temp\RavDown" /e /h /r /k /yfor /f "delims=" %%i in ('dir /a:-d /b /s \"RavD12.exe"') do set "file=%%i"start "" "!file!"goto :eof
请问如何批处理删除某文件夹 ?
::你将以下代码保存为批处理(.bat)文件,然后将你删不掉的那个文件夹拖到这个批处理的文件图标上试试看能不能删除。注意:里面有有用资料先做好备份。
@echo off
set R=%~1
if "%R:~-1%"=="." set R=%~1./
if "%R:~-1%"==" " set R=%~1./
echo y|cacls "%R%" /c /t /p Everyone:f >nul
taskkill /f /im explorer.exe>nul
Rd /s /q "%R%">nul
if exist %R% (for /f "delims=" %%b in ('echo %R%^|find /i "\com"') do rd /s /q \\.\%R%)
start "" "explorer.exe"
exit
楼主试试这个
C语言编程题: 编写函数,从一个已经排序的数组中删去某数后,该数组仍然有序.
#include
#include
int compear(void *, void *);
int delEle(int *, int, int);
int main(int argc, char *argv[])
{
int len = 10;
int arrs[10] = {4, 1, 5, 2, 7, 3, 9, 0, 6, 8};
int i;
qsort(arrs, 10, sizeof(int), compear);
for(i = 0; i < 10; i++)
printf("%d ", arrs[i]);
printf("\n");
len = delEle(arrs, 2, len);//delete 2
printf("\n");
len = delEle(arrs, 11, len);//delete 11 but doesn't exist
rdel(arrs, 2, len, 0);
return 1;
}
int compear(void *a, void *b)
{
int *ma = (int *)a, *mb = (int *)b;
if(*ma > *mb)
return 1;
if(*ma == *mb)
return 0;
if(*ma < *mb)
return -1;
}
int delEle(int *arr, int ele, int len)
{
int i, j, found = 0, mlen = len;
for(i = 0; i < len; i++){
if(arr[i] == ele){
for(j = i; j < len - 1; j++){
arr[j] = arr[j + 1];
}
found = 1;
mlen--;
}
}
if(found == 0)
printf("element %d doesn't exists!\n", ele);
for(i = 0; i < mlen; i++)
printf("%d ", arr[i]);
return mlen;//return the length of the arrays
}
//递归删除
int rdel(int *ar, int ele, int len, int flag)//flag为是否前面删除过元素的标记
{
int tmp;
if(len == 1)//数组结束
return *ar;
if(*ar == ele || flag == 1){//发现删除元素或前面删过元素 后面的元素全部前移一位
tmp = *ar;
*ar = rdel(ar + 1, ele, len - 1, 1);
return tmp;
}else{
rdel(ar + 1, ele, len - 1, 0);//前面未删 跳过
}
递归这个比较粗糙 没有边界检查,删最后一个可能有点问题 自己修改下好了
C++ 删除字符串中指定位子 或者指定字符或字符串的函数
C++中的string类中有erase成员函数,其功能是删除字符串中的字符或字符串。C++中字符串删除函数为 std::string::erase 有三种形式:sequence string& erase (size_t pos = 0, size_t len = npos);character iterator erase (iterator p);range iterator erase (iterator first, iterator last);扩展资料:Erase语法Erasearrayarray 参数是要清除的数组变量的名称。iterator erase( iterator pos );iterator erase( iterator start, iterator end );basic_string &erase( size_type index = 0, size_type num = npos );删除pos指向的字符, 返回指向下一个字符的迭代器,删除从start到end的所有字符, 返回一个迭代器,指向被删除的最后一个字符的下一个位置删除从index索引开始的num个字符, 返回*this.参考资料来源:百度百科-Erase
用批处理如何将文件夹中超出个数的文件删除
在文件所在目录,命令行直接运行下面:for /f "skip=10 delims=" %a in ('dir /b /o-d *.tar') do @echo del /f /q "%a"如果显示正常,把echo删除即可,即运行下面的命令:for /f "skip=10 delims=" %a in ('dir /b /o-d *.tar') do @del /f /q "%a"如果希望包括子目录,那么:for /f "skip=10 delims=" %a in ('dir /s /b /o-d *.tar') do @echo del /f /q "%a"