如何编写批处理文件以转到for循环内变量中提到的目录

时间:2020-11-02 16:53:41

标签: batch-file cmd

如何编写批处理文件以转到for循环内变量中提到的目录。

我有以下查询,该查询使我可以通过“文件选择”对话框选择文件,并且已将文件目录放置在变量path1中。

我需要转到该目录,然后再次在其中创建一个具有用户输入名称的文件夹。

我正在编写以下代码,但是回显!mypath!正在显示批处理文件所在的目录。

<# : chooser.bat
:: launches a File 

@echo off


for /f "delims=" %%I in ('powershell -noprofile "iex (${%~f0} | out-string)"') do (
    echo You chose %%~dpI >> E:\Rajan\test.txt

set "path1=%%~dpI"
setlocal EnableDelayedExpansion
echo !path1! >> E:\Rajan\test2.txt

cd /D "!path1!"

set /p name =Enter your name
set mypath=%cd%
echo !mypath! >> E:\Rajan\test3.txt
md "%name%"
endlocal
)
goto :EOF 

: #>

Add-Type -AssemblyName System.Windows.Forms
$f = new-object Windows.Forms.OpenFileDialog
$f.InitialDirectory = pwd
$f.Filter = "Text Files (*.dmp)|*.dmp"
$f.ShowHelp = $true
$f.Multiselect = $false
[void]$f.ShowDialog()
if ($f.Multiselect) { $f.FileNames } else { $f.FileName }

2 个答案:

答案 0 :(得分:1)

我想我把这个放在上一个问题上。

<# : chooser.bat
:: launches a File 

@echo off
SET "THE_FILE="
for /f "delims=" %%I in ('powershell -noprofile "iex (${%~f0} | out-string)"') do (
    echo You chose %%~I
    SET "THE_FILE=%%~I"
)

CD /D "%THE_FILE%\..\"

set /p "name=Enter your name: "
set "mypath=%cd%"
echo %mypath% >>"E:\Rajan\test3.txt"
IF NOT EXIST ".\%name%" (md "%name%")
goto :EOF

: #>

Add-Type -AssemblyName System.Windows.Forms
$f = new-object Windows.Forms.OpenFileDialog
$f.InitialDirectory = pwd
$f.Filter = "Text Files (*.dmp)|*.dmp"
$f.ShowHelp = $true
$f.Multiselect = $false
[void]$f.ShowDialog()
if ($f.Multiselect) { $f.FileNames } else { $f.FileName }

答案 1 :(得分:1)

这是我的答案,这次使用而不是来调用对话框。

@Echo Off
SetLocal EnableExtensions
For /F Delims^=^ EOL^= %%G In ('^"
    "%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile ^
     "(New-Object -COM 'Shell.Application').BrowseForFolder(0,'Select your directory.',1,0).Self.Path"
^"') Do MD "%%G\%UserName%"

您可以清楚地看到,使用输出的命令与我在上一个答案中提供的完全相同,并显示my comment是正确的。