0

私はこの種のことにまったく慣れておらず、どこから始めればよいかわかりません。

私は上司のために win 7 スクリプトを書こうとしています。そこで次のことが起こります。

  1. ftp ディレクトリ内のディレクトリに基づいて選択肢のリストを表示する
  2. 彼が1つを選択すると、そのディレクトリにcdされます
  3. 次に、.htm で終わるファイルに基づいて別の選択肢のリストを表示します。
  4. 彼がいずれかを選択すると、最初の 8 文字の名前が今日の日付 yyyymmdd に変更されます

すべての .htm ファイルは、ファイル名の先頭に yyyymmdd 形式があります

どの言語を使用すればよいですか? このようなことをどこから始めるべきか、何かアイデアはありますか?

編集:これは私がこれまでに持っているものです

    echo off
    cls
    echo user me@company.com> ftpcmd.dat
    echo password>> ftpcmd.dat
    echo mls . 1.tmp>> ftpcmd.dat
    echo y >> ftpcmd.dat
    echo quit>> ftpcmd.dat
    ftp -n -s:ftpcmd.dat ftp.company.com
    del ftpcmd.dat

    type mls.tmp | more +2 > trim.tmp
    findstr /N "^" trim.tmp > dirs.tmp

    ::code need to make choices from dirs.tmp
    ::value of selected to be %dir%

    cls
    echo user me@company.com> ftpcmd.dat
    echo password>> ftpcmd.dat
    echo cd %dir%>> ftpcmd.dat
    echo mls . mls.tmp>> ftpcmd.dat
    echo y >> ftpcmd.dat
    echo quit>> ftpcmd.dat
    ftp -n -s:ftpcmd.dat ftp.company.com
    del ftpcmd.dat

    findstr ".htm" mls.tmp > trim.tmp
    findstr /N "^" trim.tmp > files.tmp

    ::code need to make choices from files.tmp
    ::value of selected to be %sel%

    set new=%date:~10,4%%date:~4,2%%date:~7,2%%sel:~9%

    cls
    echo user me@company.com> ftpcmd.dat
    echo password>> ftpcmd.dat
    echo cd %dir%>> ftpcmd.dat
    echo rename %sel% %new%>> ftpcmd.dat
    echo quit>> ftpcmd.dat
    ftp -n -s:ftpcmd.dat ftp.company.com
    del ftpcmd.dat
    del *.tmp

不足している部分を埋めることができたら、それをループしてコードを削減することができます。

4

1 に答える 1

0

わかりました、とりあえずこれをテストして、問題があるかどうか教えてください。

コード:

echo off
setlocal enabledelayedexpansion
cls
echo user me@company.com> ftpcmd.dat
echo password>> ftpcmd.dat
echo mls . 1.tmp>> ftpcmd.dat
echo y >> ftpcmd.dat
echo quit>> ftpcmd.dat
ftp -n -s:ftpcmd.dat ftp.company.com
del ftpcmd.dat

type mls.tmp | more +2 > trim.tmp
findstr /N "^" trim.tmp > dirs.tmp

:invalid
set count=0
Echo Directories:
Echo.
for /f %%a in (dirs.tmp) do (
set /a count+=1
Echo     !count!. %%a
)
Echo.
set /p "choice=Enter directory number: "
if "%choice%" equ "" (Echo Invalid Choice... &pause&cls&goto :invalid)
if %choice% lss "%count%" (Echo Invalid Choice... &pause&cls&goto :invalid)
if %choice% lss 0 (Echo Invalid Choice... &pause&cls&goto :invalid)

set count=0
set dir=null_value
for /f %%a in (dirs.tmp) do (
set /a count+=1
if !count!==!choice! set dir=%%a
)
cls
if "%dir%"=="null_value" (
Echo Error: direcotry finding
pause&Exit)
cls
Echo Selected %dir%
pause
cls
echo user me@company.com> ftpcmd.dat
echo password>> ftpcmd.dat
echo cd %dir%>> ftpcmd.dat
echo mls . mls.tmp>> ftpcmd.dat
echo y >> ftpcmd.dat
echo quit>> ftpcmd.dat
ftp -n -s:ftpcmd.dat ftp.company.com
del ftpcmd.dat

findstr ".htm" mls.tmp > trim.tmp
findstr /N "^" trim.tmp > files.tmp

:invalid
set count=0
Echo files:
Echo.
for /f %%a in (files.tmp) do (
set /a count+=1
Echo     !count!. %%a
)
Echo.
set /p "choice=Enter file number: "
if "%choice%" equ "" (Echo Invalid Choice... &pause&cls&goto :invalid)
if %choice% lss "%count%" (Echo Invalid Choice... &pause&cls&goto :invalid)
if %choice% lss 0 (Echo Invalid Choice... &pause&cls&goto :invalid)

set count=0
set sel=null_value
for /f %%a in (files.tmp) do (
set /a count+=1
if !count!==!choice! set sel=%%a
)
cls
if "%sel%"=="null_value" (
Echo Error: File finding finding
pause&Exit)
cls
Echo Selected %sel%
pause
cls

set new=%date:~10,4%%date:~4,2%%date:~7,2%%sel:~9%

cls
echo user me@company.com> ftpcmd.dat
echo password>> ftpcmd.dat
echo cd %dir%>> ftpcmd.dat
echo rename %sel% %new%>> ftpcmd.dat
echo quit>> ftpcmd.dat
ftp -n -s:ftpcmd.dat ftp.company.com
del ftpcmd.dat
del *.tmp

そこには多くの間違いがあるかもしれませんが、うまくいくはずです。うまくいかない場合は、次のように cmd で実行してみてください。

  1. CMD を開始
  2. Cmd.exeと入力します
  3. バッチ ファイルをコマンド ウィンドウにドラッグ アンド ドロップして、そのディレクトリから実行します。

このようにして、何が問題なのかを知らせるエラーメッセージが表示されます。入手した場合は、それが何であるか教えてください。修正を試みることができます。

モナ

于 2013-10-01T06:35:52.573 に答える