我正在尝试从快捷方式病毒感染修复我的闪存驱动器的批处理。我想将文件从一个未命名的文件夹(Alt + 255)移动到我的闪存驱动器的根目录,有什么困难,我不能用文件夹的短名称来做,因为它是可变的(一次它是00A0~1另一个是9DEC~1)所以我正在考虑制作一个循环文件夹的命令,然后提示他们让用户判断这是不是没文件的文件夹还是没有这样(“”是文件夹? (Y / N))类似于此命令的输出:
for /d %d in (*) do rmdir /s "%d"
,但它将所有内容移动到根目录而不删除它。怎么做?
答案 0 :(得分:1)
这可能对您有用:
for /d %%i in (*) do echo %%~i |findstr "ECHO is" >nul&& move "%%~i" ELSEWHERE
这可能会将文件夹
移至ELSEWHERE
。
for /d %%i in (*) do echo %%~i |findstr "ECHO is" >nul&& rd "%%~i"
这可能会删除文件夹。
答案 1 :(得分:1)
您可能最好使用VBScript或PowerShell。
的VBScript:
Set fso = CreateObject("Scripting.FileSystemObject")
source = "K:\"
quarantine = "C:\quarantine"
Set re = New RegExp
re.Pattern = "^[^a-z0-9_-]"
re.IgnoreCase = True
For Each fldr In fso.GetFolder(source).SubFolders
If re.Test(fldr.Name) Then
answer = MsgBox("Move " & fldr.Path & "'?", vbYesNo, "Folder Check")
If answer = vbYes Then fldr.Move quarantine & "\"
End If
Next
的PowerShell:
$source = "K:\"
$quarantine = "C:\quarantine"
Get-ChildItem $source -Force | ? {
$_.PSIsContainer -and $_.Name -match '^[^a-z0-9_-]'
} | % {
$answer = Read-Host "Move $($_.FullName)? [Y/n]"
if ( $answer.Length -eq 0 -or $answer[0] -eq "y" ) {
$_.MoveTo((Join-Path $quarantine $_.Name))
}
}
两个解决方案都检查源文件夹中是否有以字母数字字符,下划线或连字符开头的文件夹名称,提示用户,以及(确认时)将该文件夹移动到隔离文件夹。
如果要在Windows XP上使用PowerShell版本,则必须先安装Windows Management Framework。 PowerShell包含在该软件包中。
答案 2 :(得分:0)
这可能有所帮助:
@echo off
set "var="
for /f "delims=" %%a in ('dir /ad /b') do (
echo "%%a"
set /p "var=Is that it? press enter for no and Y for yes: "
if defined var (
attrib -h -s -r -a "%%a" /d
move "%%a\*.*" \
)
set "var="
)