GVKun编程网logo

Windows批处理脚本中的文件/文件夹select器对话框(批量执行某文件夹下的脚本)

11

如果您对Windows批处理脚本中的文件/文件夹select器对话框感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于Windows批处理脚本中的文件/文件夹select器对话

如果您对Windows批处理脚本中的文件/文件夹select器对话框感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于Windows批处理脚本中的文件/文件夹select器对话框的详细内容,我们还将为您解答批量执行某文件夹下的脚本的相关问题,并且为您提供关于Echo在我的Windows批处理脚本中无法正常工作、Windows CMD批处理脚本中的文件名时间戳、windows – 从xp中的批处理脚本中删除临时文件、windows – 如何检查文件/目录在批处理脚本中是否可写的有价值信息。

本文目录一览:

Windows批处理脚本中的文件/文件夹select器对话框(批量执行某文件夹下的脚本)

Windows批处理脚本中的文件/文件夹select器对话框(批量执行某文件夹下的脚本)

通常,要求用户向批处理脚本提供文件名是一件杂乱的事情,不需要拼写错误,空格的path引号等等。 不幸的是,用户的准确性不是很出名。 在input文件位置直到运行时才知道的情况下,使用GUI进行文件selectinput可降低用户错误的可能性。

有没有办法调用File... Open从Windows批处理脚本File... Open样式gui文件select器或文件夹select器?

如果脚本用户安装了PowerShell或.NET,则可以。 请参阅下面的答案。

我也有兴趣看看其他人可以提供什么解决scheme。

Xamarin Studio不能build立一个控制台应用程序

如何使用fsharpi(fsi)和mono的stdinpipe道

阅读事件日志从最新到最旧

创build互斥锁时,“找不到path的一部分”错误

如何以编程方式更改文件夹审核选项下的“适用于”字段(.NET)

如何远程启动不同系统上的应用程序?

.NET Charting图例标记大小

SSL证书validation – 是否涉及任何caching?

如何以编程方式使用Windows应用程序将本地networking上的连接代理服务器configuration到Internet

如何在UltraWinGrid中设置自定义字体?

文件浏览器

更新2016.3.20:

由于PowerShell是当今几乎所有现代Windows安装的本地组件,因此我声明C#后备已不再需要。 如果你仍然需要它的Vista或XP兼容性,我把它移到一个新的答案 。 从这个编辑开始,我将脚本重写为Batch + PowerShell混合,并且可以执行多重select。 阅读并根据需要进行调整非常容易。

<# : chooser.bat :: launches a File... Open sort of file chooser and outputs choice(s) to the console :: https://stackoverflow.com/a/15885133/1683264 @echo off setlocal for /f "delims=" %%I in ('powershell -noprofile "iex (${%~f0} | out-string)"') do ( echo You chose %%~I ) goto :EOF : end Batch portion / begin PowerShell hybrid chimera #> Add-Type -AssemblyName System.Windows.Forms $f = new-object Windows.Forms.OpenFileDialog $f.InitialDirectory = pwd $f.Filter = "Text Files (*.txt)|*.txt|All Files (*.*)|*.*" $f.ShowHelp = $true $f.Multiselect = $true [void]$f.ShowDialog() if ($f.Multiselect) { $f.FileNames } else { $f.FileName }

这会导致文件select器对话框。

select输出的结果You chose C:UsersmeDesktoptmp.txt到控制台。 如果要强制单个文件select,只需将$f.Multiselect属性更改为$false 。

(PowerShell命令无情地从Just Tinkering Blog中抽取 )。请参阅OpenFileDialog Class文档以获取可设置的其他属性,例如Title和InitialDirectory 。

文件夹浏览器

更新2015.08.10:

由于已经有一个调用文件夹select器的COM方法,所以构build一个可以打开文件夹select器并输出path的PowerShell非常简单。

:: fchooser.bat :: launches a folder chooser and outputs choice to the console :: https://stackoverflow.com/a/15885133/1683264 @echo off setlocal set "psCommand="(new-object -COM 'Shell.Application')^ .browseForFolder(0,'Please choose a folder.',0).self.path"" for /f "usebackq delims=" %%I in (`powershell %psCommand%`) do set "folder=%%I" setlocal enabledelayedexpansion echo You chose !folder! endlocal

在browseForFolder()方法中,第四个参数指定层次的根。 有关有效值的列表,请参阅ShellSpecialFolderConstants 。

这会导致文件夹select器对话框。

select输出的结果You chose C:UsersmeDesktop到控制台。

有关可以设置的其他属性,请参阅FolderbrowserDialog类文档,例如RootFolder 。 如果需要,我的原始.NET System.Windows.Forms PowerShell和C#解决scheme可以在此答案的修订版本4中find,但此COM方法更容易阅读和维护。

Windows脚本主机

文件select

Windows XP有一个神秘的UserAccounts.CommonDialog WSH对象,它允许VBScript和JScript启动文件select提示。 显然,这被认为是一个安全风险,并在Vista中删除。

文件夹select

但是,WSH Shell.Application对象的browseForFolder方法仍然允许创build文件夹select对话框。 这是一个混合批处理+ JScript示例。 用.bat扩展名保存。

@if (@a==@b) @end /* :: fchooser2.bat :: batch portion @echo off setlocal for /f "delims=" %%I in ('cscript /nologo /e:jscript "%~f0"') do ( echo You chose %%I ) goto :EOF :: JScript portion */ var shl = new ActiveXObject("Shell.Application"); var folder = shl.browseForFolder(0,"Please choose a folder.",0x00); WSH.Echo(folder ? folder.self.path : '');

在browseForFolder()方法中,第四个参数指定层次的根。 有关有效值的列表,请参阅ShellSpecialFolderConstants 。

这应该从XP向上工作,并不需要一个hibrid文件,它只是用一个很长的命令行运行mshta:

@echo off set dialog="about:<input type=file id=FILE><script>FILE.click();new ActiveXObject set dialog=%dialog%('Scripting.FileSystemObject').GetStandardStream(1).WriteLine(FILE.value); set dialog=%dialog%close();resizeto(0,0);</script>" for /f "tokens=* delims=" %%p in ('mshta.exe %dialog%') do set "file=%%p" echo selected file is : "%file%" pause

文件/文件夹select可以用纯批处理完成,如下所示。 当然,感觉和外观并不像GUI那么愉快,但是它工作的很好,在我看来比GUI更容易使用。 select方法基于CHOICE命令,所以需要在不包含它的Windows版本中下载并稍微修改其参数。 当然,为了使用SET / P而不是CHOICE,代码可以很容易地修改,但是这种改变将消除只需要一个按键来导航和select的非常简单和快速的select方法。

@echo off setlocal rem Select a file or folder browsing a directory tree rem Antonio Perez Ayala rem Usage examples of SelectFileOrFolder subroutine: call :SelectFileOrFolder file= echo/ echo Selected file from *.* = "%file%" pause call :SelectFileOrFolder file=*.bat echo/ echo Selected Batch file = "%file%" pause call :SelectFileOrFolder folder=/F echo/ echo Selected folder = "%folder%" pause goto :EOF :SelectFileOrFolder resultvar [ "list of wildcards" | /F ] setlocal EnableDelayedExpansion rem Process parameters set "files=*.*" if "%~2" neq "" ( if /I "%~2" equ "/F" (set "files=") else set "files=%~2" ) rem Set the number of lines per page,max 34 set "pageSize=30" set "char=0123456789ABCDEFGHIJKLMnopQRSTUVWXYZ" rem Load current directory contents set "name[1]=<DIR> .." :ProcessthisDir set "numNames=1" for /D %%a in (*) do ( set /A numNames+=1 set "name[!numNames!]=<DIR> %%a" ) for %%a in (%files%) do ( set /A numNames+=1 set "name[!numNames!]= %%a" ) set /A numPages=(numNames-1)/pageSize+1 rem Show directory contents,one page at a time set start=1 :ShowPage set /A page=(start-1)/pageSize+1,end=start+pageSize-1 if %end% gtr %numNames% set end=%numNames% cls echo Page %page%/%numPages% of %CD% echo/ if %start% equ 1 (set base=0) else set "base=1" set /A lastOpt=pageSize+base,j=base for /L %%i in (%start%,1,%end%) do ( for %%j in (!j!) do echo !char:~%%j,1! - !name[%%i]! set /A j+=1 ) echo/ rem Assemble the get option message if %start% equ 1 (set "mssg=: ") else (set "mssg= (0=PrevIoUs page") if %end% lss %numNames% ( if "%mssg%" equ ": " (set "mssg= (") else set "mssg=%mssg%," set "mssg=!mssg!Z=Next page" ) if "%mssg%" neq ": " set "mssg=%mssg%): " :Getoption choice /C "%char%" /N /M "Select desired item%mssg%" if %errorlevel% equ 1 ( rem "0": PrevIoUs page or Parent directory if %start% gtr 1 ( set /A start-=pageSize goto ShowPage ) else ( cd .. goto ProcessthisDir ) ) if %errorlevel% equ 36 ( rem "Z": Next page,if any if %end% lss %numNames% ( set /A start+=pageSize goto ShowPage ) else ( goto Getoption ) ) if %errorlevel% gtr %lastOpt% goto Getoption set /A option=start+%errorlevel%-1-base if %option% gtr %numNames% goto Getoption if defined files ( if "!name[%option%]:~0,5!" neq "<DIR>" goto endSelect ) else ( choice /C OS /M "Open or Select '!name[%option%]:~7!' folder" if errorlevel 2 goto endSelect ) cd "!name[%option%]:~7!" goto ProcessthisDir :endSelect rem Return selected file/folder for %%a in ("!name[%option%]:~7!") do set "result=%%~Fa" endlocal & set "%~1=%result% exit /B

还有两种方法。

1.使用混合.bat / hta(必须保存为bat )脚本。它可以使用VBScript或JavaScript,但例子是使用javascrtipt。不创build临时文件。select文件夹不是那么容易,将需要一个外部的JavaScript图书馆,但select文件很容易

<!-- : starting html comment :: FileSelector.bat @echo off for /f "tokens=* delims=" %%p in ('mshta.exe "%~f0"') do ( set "file=%%~fp" ) echo/ if not "%file%" == "" ( echo selected file is : %file% ) echo/ exit /b --> <Title>== FILE SELECTOR==</Title> <body> <script language='javascript'> function pipeFile() { var file=document.getElementById('file').value; var fso= new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1); close(fso.Write(file)); } </script> <input type='file' name='file' size='30'> </input><hr><button onclick='pipeFile()'>Submit</button> </body>

1.1 – 未提交rojo提议的表格(见评论):

<!-- : starting html comment :: FileSelector.bat @echo off for /f "tokens=* delims=" %%p in ('mshta.exe "%~f0"') do ( set "file=%%~fp" ) echo/ if not "%file%" == "" ( echo selected file is : "%file%" ) echo/ exit /b --> <Title>== FILE SELECTOR==</Title> <body> <script language='javascript'> function pipeFile() { var file=document.getElementById('file').value; var fso= new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1); close(fso.Write(file)); } </script> <input id='file' type='file' name='file' size='30' onchange='pipeFile()' > </input> <hr> <button onclick='pipeFile()'>Submit</button> <script>document.getElementById('file').click();</script> </body>

2.你已经在使用powershell / net,你可以创build自编译的jscript.net hybrid.It不需要临时的cs文件进行编译,直接使用内置的jscrript.net编译器。也不需要使用powershell,代码是更可读:

@if (@X)==(@Y) @end /* JScript comment @echo off :: FolderSelectorJS.bat setlocal for /f "tokens=* delims=" %%v in ('dir /b /s /a:-d /o:-n "%systemRoot%Microsoft.NETFramework*jsc.exe"') do ( set "jsc=%%v" ) if not exist "%~n0.exe" ( "%jsc%" /nologo /out:"%~n0.exe" "%~dpsfnx0" ) for /f "tokens=* delims=" %%p in ('"%~n0.exe"') do ( set "folder=%%p" ) if not "%folder%" == "" ( echo selected folder is %folder% ) endlocal & exit /b %errorlevel% */ import System; import System.Windows.Forms; var f=new FolderbrowserDialog(); f.Selectedpath=System.Environment.CurrentDirectory; f.Description="Please choose a folder."; f.ShowNewFolderButton=true; if( f.ShowDialog() == DialogResult.OK ){ Console.Write(f.Selectedpath); }

批+ PowerShell + C#多语种解决scheme

这与Batch + PowerShell混合使用的解决scheme是一样的,但为了兼容XP和Vista,重新添加了C#回退的内容。 在xNightmare67x的请求中添加了多个文件select。

<# : chooser_XP_Vista.bat :: // launches a File... Open sort of file chooser and outputs choice(s) to the console :: // https://stackoverflow.com/a/36156326/1683264 @echo off setlocal enabledelayedexpansion rem // Does powershell.exe exist within %PATH%? for %%I in ("powershell.exe") do if "%%~$PATH:I" neq "" ( set chooser=powershell -noprofile "iex (${%~f0} | out-string)" ) else ( rem // If not,compose and link C# application to open file browser dialog set "chooser=%temp%chooser.exe" >"%temp%c.cs" ( echo using System; echo using System.Windows.Forms; echo class dummy { echo public static void Main^(^) { echo OpenFileDialog f = new OpenFileDialog^(^); echo f.InitialDirectory = Environment.CurrentDirectory; echo f.Filter = "Text Files (*.txt)|*.txt|All Files (*.*)|*.*"; echo f.ShowHelp = true; echo f.Multiselect = true; echo f.ShowDialog^(^); echo foreach ^(String filename in f.FileNames^) { echo Console.WriteLine^(filename^); echo } echo } echo } ) for /f "delims=" %%I in ('dir /b /s "%windir%microsoft.net*csc.exe"') do ( if not exist "!chooser!" "%%I" /nologo /out:"!chooser!" "%temp%c.cs" 2>NUL ) del "%temp%c.cs" if not exist "!chooser!" ( echo Error: Please install .NET 2.0 or newer,or install PowerShell. goto :EOF ) ) rem // Do something with the chosen file(s) for /f "delims=" %%I in ('%chooser%') do ( echo You chose %%~I ) rem // comment this out to keep chooser.exe in %temp% for faster subsequent runs del "%temp%chooser.exe" >NUL 2>NUL goto :EOF :: // end Batch portion / begin PowerShell hybrid chimera #> Add-Type -AssemblyName System.Windows.Forms $f = new-object Windows.Forms.OpenFileDialog $f.InitialDirectory = pwd $f.Filter = "Text Files (*.txt)|*.txt|All Files (*.*)|*.*" $f.ShowHelp = $true $f.Multiselect = $true [void]$f.ShowDialog() if ($f.Multiselect) { $f.FileNames } else { $f.FileName }

对于XP或Vista的文件夹select器,请使用WSH解决scheme或npocmaka的HTA解决scheme 。

Echo在我的Windows批处理脚本中无法正常工作

Echo在我的Windows批处理脚本中无法正常工作

主要问题:

ECHO命令将忽略令牌参数前面的所有字符,并在输出令牌之前的令牌参数后面插入所有文本:

这是脚本:

@ECHO OFF FOR /F "USEBACKQ TOKENS=2 DELims==" %%a IN (` WMIC NIC WHERE "MACAddress IS NOT NULL" GET MACAddress /FORMAT:LIST ^| FINDSTR /V /R "^%" `) DO ( ECHO [%%a] ECHO 0123456789%%a9876543210 ) PAUSE > NUL

这是预期的输出:

如何在htaccess重写规则中将一个秘密令牌作为查询string附加安全性?

写入/读取受内存保护的进程的内存

Windows批处理for循环中的令牌

如何获得Windows服务的logon用户的安全令牌?

Unix除了最后两个令牌之外,

[AA:BB:CC:11:22:33] 0123456789AA:BB:CC:11:22:339876543210

这是实际的输出:

]AA:BB:CC:11:22:33 9876543210AA:BB:CC:11:22:33

为什么我在乎

我的意图是用这个块代替上面例子中的DO()块:

:: ...FOR LOOP STUFF... `) DO ( WMIC NIC WHERE ^ "MACAddress=%%a" ^ GET ^ NetConnectionID ^ /FORMAT:LIST | FINDSTR /V /R "^$" WMIC NICCONfig WHERE ^ "MACAddress=%%a" ^ GET ^ DefaultIPGateway,^ DNSServerSearchOrder,^ IPAddress,^ IPsubnet,^ MacAddress ^ /FORMAT:LIST | FINDSTR /V /R "^$" )

如上所述,%% a之前的所有字符被截断,%% a之后的所有字符在处理脚本之前出现在%% a之前。 有人请帮忙,我在这里象征性地哭泣。

批文件FOR / F标记

从auth_requestcaching令牌

Windows批处理读取文件并将行parsing为标记和variables

有什么区别:LoadUserProfile -vs- RegOpenCurrentUser

从WinAPI CreateRestrictedToken()

@ECHO OFF SETLOCAL ENABLEDELAYEDEXPANSION FOR /F "TOKENS=2 DELims==" %%a IN (' WMIC NIC WHERE "MACAddress IS NOT NULL" GET MACAddress /FORMAT:LIST ') DO ( SET "macaddr=%%a" SET "macaddr=!macaddr:~0,-1!" ECHO [!macaddr!] ECHO 0123456789!macaddr!9876543210 ) GOTO :EOF

我发现没有理由为发现,代码给了我没有输出。 删除findstr提供了报告的输出。

可以通过将wmic输出重定向到一个文件并用十六进制编辑器检查结果来观察wmic 。 解决办法是简单地机械地移除分配给令牌的值的最后一个字符。

我简单地使用Getmac命令就像在这个脚本中一样:

@echo off mode 80,5 & Color 9E Title Get (LAN,Public) (IP) and MAC Addresses by Hackoo 2017 cls echo( & echo( echo Please Wait a While ... Searching for (LAN,Public)(IP) and MAC addresses ... @for /f "delims=[] tokens=2" %%a in ('ping -4 -n 1 %ComputerName% ^| findstr [') do ( set "LAN_IP=%%a" ) for /f "tokens=2 delims=: " %%A in ( 'nslookup myip.opendns.com. resolver1.opendns.com 2^>NUL^|find "Address:"' ) Do set ExtIP=%%A @For /f %%a in ('getmac /NH /FO Table') do ( @For /f %%b in ('echo %%a') do ( If /I NOT "%%b"=="N/A" ( Set "MY_MAC=%%b" ) ) ) Cls echo( echo My Private LAN IP : %LAN_IP% echo My External Public IP : %ExtIP% echo MAC Address : %MY_MAC% Timeout /T 5 /NoBreak>nul & Exit

Windows CMD批处理脚本中的文件名时间戳

Windows CMD批处理脚本中的文件名时间戳

我有一个批处理脚本输出一个文件,我试图确保每次脚本执行,没有现有的文件被覆盖,所以我试图把时间戳上。

目前我有这个:

set stamp=%DATE:/=-%_%TIME::=-%

但是如果时间是凌晨1点到9点,它会给出类似于:

13-06-2012_ instead of a full 13-06-2012_12-39-37.28

我怎样才能解决这个问题?

Windowsbatch file''del''不起作用

将非蝙蝠扩展文件作为batch file运行

如何避免创build输出文件,如果没有find文件?

批量查找文件扩展名

curl不被识别为内部或外部命令,可操作程序或batch file

我正在使用Windows 7,并且在命令行窗口中echo %date% %time%的输出是(我的''short date''的时钟格式被设置为显示3个字母的月份):

03-Sep-12 9:06:21.54

编辑:我一直在使用以下时间戳,现在很好,运作良好。

set timestamp=%DATE:/=-%_%TIME::=-% set timestamp=%timestamp: =%

它产生了一个时间戳,如: 18-03-2013_13-37-43.26 ,通过replace/和:在%TIME%和%DATE% ,然后剥离空白。 空白是我原来的问题,真的是这个问题。

如何从batch file中调用VbScript而不打开其他命令提示符

像Windows的wget的默认应用程序

通过CMD调用几个batch file不会阻塞

WHILE循环在FOR循环内

如何通过windows批量操作recursionreplace名称

请参阅堆栈溢出问题如何获取Windows命令行上的当前日期时间,以适当的格式在文件名中使用? 。

创建一个文件date.bat :

@echo off For /f "tokens=2-4 delims=/ " %%a in (''date /t'') do (set mydate=%%c-%%a-%%b) For /f "tokens=1-3 delims=/:/ " %%a in (''time /t'') do (set mytime=%%a-%%b-%%c) set mytime=%mytime: =% echo %mydate%_%mytime%

运行date.bat :

C:>date.bat 2012-06-14_12-47-PM

更新:

你也可以用一行这样做:

for /f "tokens=2-8 delims=.:/ " %%a in ("%date% %time%") do set DateNtime=%%c-%%a-%%b_%%d-%%e-%%f.%%g

这个代码的前四行将使用WMIC为您提供XP Pro和更高版本中可靠的YY DD MM YYYY HH Min Sec变量。

@echo off for /f "tokens=2 delims==" %%a in (''wmic OS Get localdatetime /value'') do set "dt=%%a" set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%" set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%" set "datestamp=%YYYY%%MM%%DD%" & set "timestamp=%HH%%Min%%sec%" set "fullstamp=%YYYY%-%MM%-%DD%_%HH%-%Min%-%sec%" echo datestamp: "%datestamp%" echo timestamp: "%timestamp%" echo fullstamp: "%fullstamp%" pause

这是我为了返回时间戳而创建的批处理脚本。 可以提供可选的第一个参数作为字段分隔符。 例如:

C: SYS TMP> timestamp.bat

20160404_144741

c: sys tmp> timestamp.bat –

2016-04-04_14-45-25

c: sys tmp> timestamp.bat:

2016年04:04_14:45:29

@echo off SETLOCAL ENABLEDELAYEDEXPANSION :: put your desired field delimiter here. :: for example,setting DELIMITER to a hyphen will separate fields like so: :: yyyy-MM-dd_hh-mm-ss :: :: setting DELIMITER to nothing will output like so: :: yyyyMMdd_hhmmss :: SET DELIMITER=%1 SET DATESTRING=%date:~-4,4%%DELIMITER%%date:~-7,2%%DELIMITER%%date:~-10,2% SET TIMESTRING=%TIME% ::TRIM OFF the LAST 3 characters of TIMESTRING,which is the decimal point and hundredths of a second set TIMESTRING=%TIMESTRING:~0,-3% :: Replace colons from TIMESTRING with DELIMITER SET TIMESTRING=%TIMESTRING::=!DELIMITER!% :: if there is a preceeding space substitute with a zero echo %DATESTRING%_%TIMESTRING: =0%

它想在DD-MM-YYYY_HH-MM-SS.TT的全职时间TT是滴答。 例外说明了这一切。

for /f "tokens=2-8 delims=.:/ " %%a in ("%date% %time: =0%") do set DateNtime=%%c-%%a-%%b_%%d-%%e-%%f.%%g echo %DateNtime%

或者,从命令行:

for /f "tokens=2-8 delims=.:/ " %a in ("%date% %time: =0%") do echo %c-%a-%b_%d-%e-%f.%g

编辑:根据bryce的非标准时间/日期规格。 ( 03-Sep-12 9:06:21.54 )

@echo off setlocal enabledelayedexpansion for /f "tokens=1-7 delims=.:/- " %%a in ("%date% %time%") do ( if "%%b"=="Jan" set MM=01 if "%%b"=="Feb" set MM=02 if "%%b"=="Mar" set MM=03 if "%%b"=="Apr" set MM=04 if "%%b"=="May" set MM=05 if "%%b"=="Jun" set MM=06 if "%%b"=="Jul" set MM=07 if "%%b"=="Aug" set MM=08 if "%%b"=="Sep" set MM=09 if "%%b"=="Oct" set MM=10 if "%%b"=="Nov" set MM=11 if "%%b"=="Dec" set MM=12 set HH=0%%d set HH=!HH:~-2! echo 20%%c-!MM!-%%a_!HH!-%%e-%%f.%%g ) endlocal

感谢Stack Overflow问题的答案在批处理作业中创建文件名作为时间戳 ,我发现它是一个终止文件名的空间。

在过去,我使用了我在Internet上找到的.cmd脚本。 我讨厌本地化通常与日期混淆的方式。 任何时候你有文件名的日期(或其他地方,如果我可能是如此大胆),我想你想要他们在ISO 8601格式:

2015-02-19T14:54:51Z

或者按照YMDHM顺序排列的其他东西,比如

2015-02-19 14:54

因为它修复了MDY / DMY模糊性,因为它可以排序为文本。

我不知道哪里有.cmd脚本,但它可能是http://ss64.com/nt/Syntax-getdate.html ,它在我的YYYY-MM-DD Windows 8.1和M / D / YYYY Windows 7的安装。两者都给出相同的格式:

2015-02-09 04:43

总结

以上是小编为你收集整理的Windows CMD批处理脚本中的文件名时间戳全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

windows – 从xp中的批处理脚本中删除临时文件

windows – 从xp中的批处理脚本中删除临时文件

我正在寻找一个很好的批处理脚本,可以快速找到&清除 Windows中所有已知的安全临时文件夹/文件(尽可能多的变体)计算机(例如Windows临时文件夹,所有用户IE临时文件夹等).我喜欢像ccleaner(通过Cleanmgr.exe)这样的UI工具,但是当我试图快速清理几台计算机和/或只需要很少的参与时,有一个脚本会很好.

再加上脚本,我可以将几个脚本链接在一起.也许一个人会启动各种防病毒和/或恶意软件检测器.

任何人都有一个好的或可以指向一个良好的资源?

这是我写的一个小脚本,我保留在我的USB实用程序驱动器上……对于Citrix服务器来说很棒:)
@echo off
Echo Started %time%
Echo Started %time% >> temps.txt
Echo Running for XP... >> temps.txt
Echo Running for XP...
FOR /F "tokens=*" %%G IN ('DIR /B /AD') DO IF EXIST "%%G\Local Settings\Temp\" (
    RMDIR /S /Q "%%G\Local Settings\Temp"
    MKDIR "%%G\Local Settings\Temp"
    Echo Cleared %%G\Local Settings\Temp
    Echo Cleared %%G\Local Settings\Temp >> temps.txt
)
FOR /F "tokens=*" %%G IN ('DIR /B /AD') DO IF EXIST "%%G\Local Settings\Temporary Internet Files\" (
    RMDIR /S /Q "%%G\Local Settings\Temporary Internet Files\"
    MKDIR "%%G\Local Settings\Temporary Internet Files\"
    Echo Cleared %%G\Local Settings\Temporary Internet Files\
    Echo Cleared %%G\Local Settings\Temporary Internet Files\ >> temps.txt
)
Echo Done.
Echo Running for Vista >> temps.txt
Echo Running for Vista...
FOR /F "tokens=*" %%G IN ('DIR /B /AD') DO IF EXIST "%%G\AppData\Local\Temp\" (
    RMDIR /S /Q "%%G\AppData\Local\Temp\"
    MKDIR "%%G\AppData\Local\Temp\"
    Echo Cleared %%G\AppData\Local\Temp\
    Echo Cleared %%G\AppData\Local\Temp\ >> temps.txt
)
FOR /F "tokens=*" %%G IN ('DIR /B /AD') DO IF EXIST "%%G\AppData\Local\Microsoft\Windows\Temporary Internet Files\" (
    RMDIR /S /Q "%%G\AppData\Local\Microsoft\Windows\Temporary Internet Files\"
    MKDIR "%%G\AppData\Local\Microsoft\Windows\Temporary Internet Files\"
    Echo Cleared %%G\Local Settings\Temporary Internet Files\
    Echo Cleared %%G\Local Settings\Temporary Internet Files\ >> temps.txt
)
Echo Done.
Echo Ended %time%
Echo Ended %time% >> temps.txt

使用风险等等……这样可以解决问题.

我从Documents and Settings文件夹或Vista上的用户运行它.你可以轻松地将CD命令放在最上面,以便从任何你想要的地方运行它.

cd %userprofile%
cd ..

此外,根据我的经验,随时清除临时文件夹通常是安全的.使用temp中的文件的程序将锁定它们,并且该脚本将在该文件上出错并继续运行.

IF EXIST行在这里特别好用,它可以防止脚本在NetworkService和类似的文件夹中创建文件夹,如果你没有在Vista或XP上运行它,那么这个部分的速度非常快.

从哪里运行脚本创建temps.txt日志文件

编辑:Freenode上来自## windows-server的建议:问:为什么不在开始时检测它运行的操作系统并运行相应的部分?答:我经常在离线媒体上使用脚本,例如已经提取的硬盘.

windows – 如何检查文件/目录在批处理脚本中是否可写

windows – 如何检查文件/目录在批处理脚本中是否可写

在bash中,我会用

[ -w ... ]

什么是Windows批处理文件的等价物?

解决方法

据我所知,您可以查看文件是否为 exists or not,但除了尝试写入之外,无法知道它是否可写.这不仅仅是没有R标志的问题;还涉及网络和NTFS权限(也可能是组策略).

如果您可以重写代码,则可以通过errorlevel捕获写操作的返回码.

今天的关于Windows批处理脚本中的文件/文件夹select器对话框批量执行某文件夹下的脚本的分享已经结束,谢谢您的关注,如果想了解更多关于Echo在我的Windows批处理脚本中无法正常工作、Windows CMD批处理脚本中的文件名时间戳、windows – 从xp中的批处理脚本中删除临时文件、windows – 如何检查文件/目录在批处理脚本中是否可写的相关知识,请在本站进行查询。

本文标签: